用不同的步进来遍历列表

Jinku Hu 2023年1月30日
  1. 迭代具有不同步长的列表的不同部分
  2. 迭代整个列表
  3. 迭代子列表
用不同的步进来遍历列表

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

假设你有一长串元素,但你只对列表中的每隔一个元素感兴趣。比如只对第 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
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 创始人。Jinku 在机器人和汽车行业工作了8多年。他在自动测试、远程测试及从耐久性测试中创建报告时磨练了自己的编程技能。他拥有电气/电子工程背景,但他也扩展了自己的兴趣到嵌入式电子、嵌入式编程以及前端和后端编程。

LinkedIn Facebook