序列-下
>>> # all() 函数是判断可迭代对象中是否所有元素的值都为真;>>> # any() 函数则是判断可迭代对象中是否存在某个元素的值为真。
>>> x =
>>> y =
>>> all(x)
False
>>> all(y)
True
>>> any(x)
True
>>> any(y)
True
>>> # enumerate() 函数用于返回一个枚举对象,它的功能就是将可迭代对象中的每个元素及从 0 开始的序号共同构成一个二元组的列表:
>>> seasons = ["Spring", "Summer", "Fall", "Winter"]
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> for i, j in enumerate(seasons, start=10):
... print(i, "->", j)
...
10 -> Spring
11 -> Summer
12 -> Fall
13 -> Winter
>>> # enumerate() 有一个 start 参数,可以自定义序号开始的值:
>>> # zip() 函数用于创建一个聚合多个可迭代对象的迭代器
>>> # 将作为参数传入的每个可迭代对象的每个元素依次组合成元组,即第 i 个元组包含来自每个参数的第 i 个元素。
>>> >>>
>>> x =
>>> y =
>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]
>>> z =
>>> zipped = zip(x, y, z)
>>> list(zipped)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> # 如果传入的可迭代对象长度不一致,那么将会以最短的那个为准:
>>> z = "FishC"
>>> zipped = zip(x, y, z)
>>> list(zipped)
[(1, 4, 'F'), (2, 5, 'i'), (3, 6, 's')]
>>> # 当我们不关心较长的可迭代对象多出的数据时,使用 zip() 函数无疑是最佳的选择,因为它自动裁掉多余的部分。
>>> # 如果那些值对于我们来说是有意义的,我们可以使用 itertools 模块的 zip_longest() 函数来代替:
>>> import itertools
>>> zipped = itertools.zip_longest(x, y, z)
>>> list(zipped)
[(1, 4, 'F'), (2, 5, 'i'), (3, 6, 's'), (None, None, 'h'), (None, None, 'C')]
>>> # map() 函数会根据提供的函数对指定的可迭代对象的每个元素进行运算,并将返回运算结果的迭代器:
>>> mapped = map(ord, "FishC")
>>> list(mapped)
>>> # 如果指定的函数需要两个参数,后面跟着的可迭代对象的数量也应该是两个:
>>> mapped = map(pow, , )
>>> list(mapped)
>>>
>>> # 如果可迭代对象的长度不一致,那么 Python 采取的做法跟 zip() 函数一样,都是在最短的可迭代对象终止时结束:
>>> list(map(max, , , ))
>>> # 与 map() 函数类似,filter() 函数也是需要传入一个函数作为参数,不过 filter() 函数是根据提供的函数,对指定的可迭代对象的每个元素进行运算,并将运算结果为真的元素,以迭代器的形式返回:
>>> filter(str.islower, "FishC")
<filter object at 0x010EE490>
>>> # 上面代码我们传入的是字符串的 islower() 方法,作用就是判断传入的参数是否为小写字母,结合到 filter() 函数中使用,就是剔除大写字母,保留小写字母的作用。
>>> # 如果提供的函数是 None,则会假设它是一个 “鉴真” 函数,即可迭代对象中所有值为假的元素会被移除:
>>> list(filter(None, ))
>>> # 可迭代对象和迭代器最大的区别是:可迭代对象咱们可以对其进行重复的操作,而迭代器则是一次性的!
>>> # 将可迭代对象转换为迭代器:iter() 函数
>>> x =
>>> y = iter(x)
>>> type(x)
<class 'list'>
>>> type(y)
<class 'list_iterator'>
>>> next(y)
1
>>> next(y)
2
>>> next(y)
3
>>> next(y)
4
>>> next(y)
5
>>> next(y)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>> z = iter(x)
>>> next(z, "没啦,被你掏空啦~~")
1
>>> next(z, "没啦,被你掏空啦~~")
2
>>> next(z, "没啦,被你掏空啦~~")
3
>>> next(z, "没啦,被你掏空啦~~")
4
>>> next(z, "没啦,被你掏空啦~~")
5
>>> next(z, "没啦,被你掏空啦~~")
'没啦,被你掏空啦~~'
页:
[1]