迭代具有不同步长的列表的不同部分

假设你有一长串元素,并且你只对列表中的每个其他元素感兴趣。也许你只想检查列表中的第一个或最后一个元素或特定范围的条目。Python 具有强大的索引内置函数。以下是如何实现这些方案的一些示例。

这是一个简单的列表,将在整个示例中使用:

lst = ['alpha', 'bravo', 'charlie', 'delta', 'echo']

迭代整个列表

要迭代列表中的每个元素,可以使用如下所示的 for 循环:

for s in lst:
    print s[:1] # print the first letter

for 循环为 lst 的每个元素分配 s。这将打印:

a
b
c
d
e

通常,你需要元素和该元素的索引。enumerate 关键字执行该任务。

for idx, s in enumerate(lst):
    print("%s has an index of %d" % (s, idx))

索引 idx 将从零开始,每次迭代递增,而 s 将包含正在处理的元素。之前的代码片段将输出:

alpha has an index of 0
bravo has an index of 1
charlie has an index of 2
delta has an index of 3
echo has an index of 4

迭代子列表

如果我们想迭代一个范围(记住 Python 使用从零开始的索引),请使用 range 关键字。

for i in range(2,4):
    print("lst at %d contains %s" % (i, lst[i]))

这将输出:

lst at 2 contains charlie
lst at 3 contains delta

该列表也可以被切片。下面的切片表示法从索引 1 处的元素到步骤为 2 的结尾。两个 for 循环给出相同的结果。

for s in lst[1::2]:
    print(s)

for i in range(1, len(lst), 2):
    print(lst[i])

上面的代码段输出:

bravo
delta

索引和切片是它自己的主题。