`
_wyh
  • 浏览: 59424 次
社区版块
存档分类
最新评论

python的切片,迭代,列表生成式

阅读更多

python的代码需要有优雅,明确,简单的特性。代表着需要代码越少越好,越简单越好。为此,python提供了许多高级特性,如切片,迭代,列表生成式等等,可以有效的用简单代码实现复杂功能。

 

参考资料:廖雪峰官方网站http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317568446245b3e1c8837414168bcd2d485e553779e000

1,切片

适用类型:list, tuple, str

切片功能简单说就是实现截取,不管是列表list,不可变列表tuple还是字符串str,使用切片可以使代码更简单。

    (1)list

li = ['0', '1', '2', '3', '4', '5', '6']
print(li[1:3])
print(li[:2])
print(li[3:])
print(li[-5:-3])
print(li[-5:])
print(li[::2])

   结果为:

['1', '2']
['0', '1']
['3', '4', '5', '6']
['2', '3']
['2', '3', '4', '5', '6']
['0', '2', '4', '6']

    li[1:3] : 从list的索引1开始取,取到索引3停止,不包括索引3

    li[:2] : 从头取,取到索引2停止,不包括2

    li[3:] : 从索引3一直取到最后

    li[-5:-3] : 从索引-5取到索引-3,不包括索引-3

    li[-5:] : 从索引-5取到最后

    li[::2] : 从头取到尾,每2个元素取一个中间隔一个

 

    (2)tuple

    tuple本身就是一种list, 而它的切片操作与list切片操作相同,只是得到结果依然是不可变的tuple

tup = ('0', '1', '2', '3', '4', '5')
print(tup[2:])
print(tup[:4])
print(tup[1::3])

   结果为:

 ('2', '3', '4', '5')
 ('0', '1', '2', '3') 
 ('1', '4')

 

 

    (3)str

    str的切片操作是对每个字符的截取,其它与list和tuple切片相同

string = '012345'
print(string[2:])
print(string[:4])
print(string[1::3])

    结果为:

2345
0123
14

 

 

 

2,迭代

适用类型:list, tuple, str, dict

python中可迭代的类型为Iterable类型。比如list, tuple, str等

 

python的for循环抽象程度比较高,不光是列表list和tuple可以迭代,字符串和字典也可以。

    (1)list, tuple

li = ['zero', 'one', 'two', 'three', 'foul', 'five', 'six']
for value in li:
    print(value)

     结果为:

zero
one
two
three
foul
five
six

    类似于forEach,不能获取每次迭代的索引,只获取迭代数值

 

  

for index, value in enumerate(li):
    print(index, value)

     结果为:

0 zero
1 one
2 two
3 three
4 foul
5 five
6 six

    enumerate()函数可以把list变成索引-元素这种形式,从而可以在for循环中同时获取索引和数值

 

 

for index in range(len(li)):
    print(index, li[index])
# 同样可以获取上面的结果

 

 

    (2)dict

dic = {'one': 1, 'two': 2, "three": 3}
for key in dic:
    print(key)

       结果为:

two
three
one

    直接迭代字典,每次获取的元素是字典的key

 

 

for value in dic.values():
    print(value)
1
3
2

    迭代字典的所有数值,用来获取每次迭代的数值。

 

for key, value in dic.items():
    print(key, value)
one 1
three 3
two 2

 

for value in dic.items():
    print(value)
('two', 2)
('three', 3)
('one', 1)

 

 

 

    (3)str

    字符串的迭代迭代的是字符串的每一个字符

string = '012345'
for value in string:
    print(value)
0
1
2
3
4
5

  

 

3,列表生成式

使用类型:可以迭代的类型

列表生成式可以进一步简化代码。

 

列表生成式返回的是数组, for前面的表达式可以代替for中的return

a = [x * x * x for x in range(0, 11)]
print(a)

    得到0-10中每个数的立方所组成的数组

[0, 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

  

b = [x * x * x for x in range(0, 11) if x % 2 == 0]
print(b)

    得到0-10中每个偶数的立方所组成的数组

[0, 8, 64, 216, 512, 1000]

 

a = [1, 2, 3, 4, 5, 6]
b = [4, 5]
c = [x * y for x in a if x % 2 == 0 for y in b]
print(c)

    可以得到a中的每个偶数和b中的每个数相乘的结果组成的数组

 [8, 10, 16, 20, 24, 30]

 

a = {'a': 'b', 'c': 'd', 'e': 'f'}
b = [key + value for key, value in a.items()]
print(b)

    可以得到字典a中每个元素的key与value相加的结果得到的数组

['ab', 'cd', 'ef']

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    PYTHON从入门到精通.doc

    列表生成式 生成器 函数式编程 高阶函数 匿名函数 装饰器 偏函数 模块 使用模块 安装第三方模块 使用__future__ 面向对象编程 类和实例 访问限制 继承和多态 获取对象信息 面向对象高级编程 使用__slots__ 使用@...

    Python 函数的可变参数、切片、迭代和列表生成式

    Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。 2. 切片 L = range(1, 101) # L = [1, 2, 3, ..., 100] print(L[0:3]) # 等同于L[:3],...

    廖雪峰python3 完整带索引,图片 最新教程 pdf版

    列表生成式 生成器 迭代器 函数式编程 高阶函数 map/reduce filter sorted 返回函数 匿名函数 装饰器 偏函数 模块 使用模块 安装第三方模块 单元测试 文档测试 IO编程 文件读写 StringIO和BytesIO 操作文件和目录 ...

    Python 高级特性

    文章目录Python 高级特性切片迭代列表生成式生成器 generator迭代器 切片 可以对list, tuple, string进行切片 [起始位置:终止位置 + 1: 步长] 可以使用负数,-1为倒数第一个数 步长为负数时,从后向前分隔,对应的...

    Python 难点重点学习笔记

    Python学习过程中,遇到的python...高级特性,包括切片、列表生成式,生成器、迭代器,函数式编程,包括高级函数、map、reduce、filter、sorted;返回函数、匿名函数、偏函数、装饰器的深入理解。面向对象高级编程等。

    Python基础入门教程.zip

    课程简介: 第一课 入门基础 Python简介 为什么选择Python 环境搭建 如何学好编程 常用关键字 ...第5课 文件访问与函数式编程入门 第6课 高级面向对象 第7课 并发编程以及系统常用模块 第8课 常用第三方模块

    Python 3教程(廖雪峰).rar

    列表生成式 105 生成器 109 迭代器 118 函数式编程 121 高阶函数 122 map/reduce 125 filter 130 sorted 134 返回函数 137 匿名函数 141 装饰器 143 偏函数 148 模块 151 使用模块 153 安装第三方模块...

    python高级特性简介

    主要介绍了python高级特性的相关内容,其中包括切片,迭代,列表生成式,生成器,迭代器,感兴趣的朋友可以了解下

    目前最火最热门的python经典编程题之4

    练习高级特性的列表生成式 练习高级特性的生成器 练习高级特性的迭代器 练习函数式编程的map和reduce 练习函数式编程的filter函数 练习函数式编程的sorted函数 练习下函数式编程的返回函数 练习函数式编程的匿名函数...

    Python核心编程第二版

    很不错的python书 第1部分 Python核心  第1章 欢迎来到Python世界   1.1 什么是Python   1.2 起源   1.3 特点   1.3.1 高级   1.3.2 面向对象   1.3.3 可升级   1.3.4 可扩展   1.3.5 可...

    python cookbook(第3版)

    4.3 使用生成器创建新的迭代模式 4.4 实现迭代器协议 4.5 反向迭代 4.6 带有外部状态的生成器函数 4.7 迭代器切片 4.8 跳过可迭代对象的开始部分 4.9 排列组合的迭代 4.10 序列上索引值迭代 4.11 同时迭代...

    Python核心编程第二版(ok)

    Python核心编程第二版(ok) 第1部分 Python核心  第1章 欢迎来到Python世界   1.1 什么是Python   1.2 起源   1.3 特点   1.3.1 高级   1.3.2 面向对象   1.3.3 可升级   1.3.4 可扩展   ...

    python学习笔记-高级特性 20200309

    文章目录高级特性切片exercise迭代定义迭代dict对象:迭代字符串对象判断是否为可迭代对象对list类实现下标循环exercise小结列表生成式生成list列出当前目录下所有文件和目录名使用两个变量生成list列表生成式中if…...

    Python核心编程(第二版).pdf (压缩包分2部分,第二部分)

    原书名: Core Python Programming (2nd Edition) 原出版社: Prentice Hall PTR 作者: (美)Wesley J. Chun 译者: 宋吉广 出版社:人民邮电出版社 ISBN:9787115178503 上架时间:2008-6-23 出版日期:2008 ...

    Python核心编程(第二版).pdf (压缩包分2部分,第一部分)

    原书名: Core Python Programming (2nd Edition) 原出版社: Prentice Hall PTR 作者: (美)Wesley J. Chun 译者: 宋吉广 出版社:人民邮电出版社 ISBN:9787115178503 上架时间:2008-6-23 出版日期:2008 ...

    Python从基础入门到进阶教程 全套培训教学教程课件 详细版类共5个学习阶段 80多份学习课件 含习题和案例.rar

    第03节 04 解析式生成器 第03节 05内建函数迭代器 第03节 选择排序 第04-A节 01函数、参数及参数解构 第04-A节 01课堂习题 第04-A节 插入排序 00IPython的使用 01封装和解构 02set及操作 03字典及操作

    廖雪峰Pyhton教程3.x版[完整版]

    5.3 列表生成式 79 5.4 生成器 81 5.5 迭代器 88 6 函数式编程 90 6.1 高阶函数 91 6.1.1 map/reduce 94 6.1.2 filter 97 6.1.3 sorted 100 6.2 返回函数 101 6.3 匿名函数 105 6.4 装饰器 106 6.5 偏函数 110 7 ...

    python教程

    列表生成式 ............................................................................................................... 108 生成器 .....................................................................

    Python基础教程(第3版)-201802出版-文字版

    久负盛名的 Python 入门经典针对 Python 3 全新升级十个出色的项目,让你尽快可以使用 Python 解决实际问题目录第 1章 快速上手:基础知识 ........................ 1 1.1 交互式解释器 .............................

Global site tag (gtag.js) - Google Analytics