高级特性
1、切片
L[0:3]、
L[:3]、L[3:]、L[-1:]、
L[:10:2]、
L[::5]
tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple。
字符串'xxx'
也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串。
2、迭代
在Python中,迭代是通过for ... in
来完成的。
只要是可迭代对象,无论有无下标,都可以迭代
默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values()
,如果要同时迭代key和value,可以用for k, v in d.items()
。
字符串也可迭代。
判断是否可迭代:通过collections模块的Iterable类型判断。
isinstance('abc', Iterable) # str是否可迭代
enumerate
函数可以把一个list变成索引-元素对
3、列表生成式
[结果计算式 for x in range(a, b) if 条件判断]
两层循环: [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
4、生成器(generator)
一边循环一边计算的机制,节省了大量的空间。
原理:在for
循环的过程中不断计算出下一个元素,并在适当的条件结束for
循环。
5、迭代器
可以直接作用于for
循环的数据类型有以下几种:
一类是集合数据类型,如list
、tuple
、dict
、set
、str
等;
一类是generator
,包括生成器和带yield
的generator function。
生成器都是Iterator
对象,但list
、dict
、str
虽然是Iterable
,却不是Iterator
。把list
、dict
、str
等Iterable
变成Iterator
可以使用iter()
函数