1.切片
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] L[0:3]
L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。
[:]就可以原样复制一个list
L[:10:2]:前10个数,每两个取一个
L[::5]:所有数,每5个取一个
2.迭代
判断一个对象是可迭代对象呢?方法是通过collections.abc模块的Iterable类型判断:
>>> from collections.abc import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False
迭代是通过for ... in来完成的
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for key in d:
... print(key)
迭代value,可以用for value in d.values()
同时迭代key和value,可以用for k, v in d.items()
内置的enumerate函数可以把一个list变成索引-元素对
for i, value in enumerate(['A', 'B', 'C']): ... print(i, value)
3.列表生成式(创建list的生成式)
>>> [x * x for x in range(1, 11)] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] >>> [m + n for m in 'ABC' for n in 'XYZ'] ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ'] >>> L = ['Hello', 'World', 'IBM', 'Apple'] >>> [s.lower() for s in L] ['hello', 'world', 'ibm', 'apple']
>>>[x for x in range(1, 11) if x % 2 == 0] [2, 4, 6, 8, 10] >>>[x if x % 2 == 0 else -x for x in range(1, 11)] [-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]
在一个列表生成式中,for前面的if ... else是表达式,而for后面的if是过滤条件,不能带else。
4.生成器(一边循环一边计算的机制,称为生成器:generator)
创建生成器
>>> g = (x * x for x in range(10)) >>> g
获取generator元素
>>> g = (x * x for x in range(10)) >>> for n in g: ... print(n)



