跳到主要内容

迭代处理

常用的迭代处理内置函数:

函数说明示例
range(start, stop[, step])生成整数序列(不包含 stop)list(range(1, 5)) → [1, 2, 3, 4]
enumerate(iterable[, start])同时返回「下标 + 元素」enumerate(['a', 'b'], 1)
zip(*iterables)并行打包多个序列zip([1, 2], ['a', 'b'])
map(func, iterable)对每个元素应用函数list(map(str, [1, 2])) → ['1', '2']
filter(func, iterable)过滤出使函数为真的元素list(filter(None, [0, 1, 2])) → [1, 2]
sorted(iterable[, key, reverse])排序并返回新列表sorted([3, 1, 2]) → [1, 2, 3]
reversed(seq)反转序列list(reversed([1, 2])) → [2, 1]
iter(obj)获取迭代器it = iter([1, 2])
next(it[, default])取迭代器的下一个值next(it, '没了')

示例​

# range:生成整数序列
print(list(range(1, 5))) # [1, 2, 3, 4]
print(list(range(10, 0, -2))) # [10, 8, 6, 4, 2]

# enumerate:同时获取下标和元素
for i, fruit in enumerate(['apple', 'banana'], start=1):
print(i, fruit) # 1 apple / 2 banana

# zip:并行遍历多个序列
for num, name in zip([1, 2], ['one', 'two']):
print(num, name) # 1 one / 2 two

# map / filter:映射与过滤
print(list(map(str, [1, 2, 3]))) # ['1', '2', '3']
print(list(filter(lambda x: x > 1, [1, 2, 3]))) # [2, 3]

# sorted:排序,不修改原序列
print(sorted([3, 1, 2])) # [1, 2, 3]
print(sorted(['bob', 'Alice'], key=str.lower)) # ['Alice', 'bob']
print(list(reversed([1, 2, 3]))) # [3, 2, 1]

# iter / next:手动驱动迭代器
it = iter([1, 2])
print(next(it), next(it)) # 1 2
print(next(it, '没了')) # 没了,耗尽后返回默认值