用不同的步进来遍历列表
迭代具有不同步长的列表的不同部分
假设你有一长串元素,但你只对列表中的每隔一个元素感兴趣。比如只对第 1、3、5…元素感兴趣,或者也许你只想检查列表中的第一个或最后一个元素,或列表特定范围的元素。Python 具有强大的索引内置功能。以下是如何实现这些方案的一些示例。
我们将在整个示例中使用下面的这个简单列表,
lst = ['January', 'Febuary', 'March', 'April', 'May']
迭代整个列表
要迭代列表中的每个元素,for
可以使用如下所示的循环:
for s in lst:
print s[:1] # print the first letter
的 for
循环分配 S 表示的每个元素 lst
。这将打印:
a
b
c
d
e
有时,你需要元素和该元素的索引,那我们可以使用 enumerate
关键字。
for idx, s in enumerate(lst):
print("%s has an index of %d" % (s, idx))
索引 idx
将从零开始,每次迭代都会递增,而 s
等于该索引位置的元素。我们会得到以下的输出,
January has an index of 0
Febuary has an index of 1
March has an index of 2
April has an index of 3
May has an index of 4
迭代子列表
如果我们想迭代列表中某个范围,可以用 range
关键字。
for i in range(2,4):
print("lst at %d contains %s" % (i, lst[i]))
这将输出:
lst at 2 contains March
lst at 3 contains April
我们也可以用切片方法。下面的切片表示从索引 1
开始到结束的,步进为 2
的子列表。两个 for
循环给出相同的结果。
for s in lst[1::2]:
print(s)
for i in range(1, len(lst), 2):
print(lst[i])
上面的代码段输出:
Febuary
April
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn