在Python中成对迭代列表的干净方法?

2024-09-28 17:04:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用了一个string.split(':')函数,这样我的列表包括名字:姓对(例如["John", "Doe", "Alex", "Jacobson" ...]

我知道如何使用一个基本的for循环,在这个循环中,我每次将索引增加两个(并与列表的长度进行比较),但是我想用一种更具体于Python的方式来处理它。在

有没有更干净的循环结构可以让我考虑前两个索引,然后再考虑下两个,等等?在


Tags: 函数列表forstring方式名字john结构
3条回答
>>> import itertools
>>> L = ["John", "Doe", "Alex", "Jacobson"]
>>> for fname, lname in zip(*itertools.repeat(iter(L), 2)): print(fname, lname)
...
John Doe
Alex Jacobson

调用列表上的iterzip

l = ["John", "Doe", "Alex", "Jacobson"]

it = iter(l)

for f,l  in zip(it, it):
    print(f,l)

John Doe
Alex Jacobson

zip(it,it)每次只消耗迭代器中的两个元素,直到迭代器用尽,所以我们最终得到的是名字和姓氏配对。它在某种程度上相当于:

^{pr2}$
for first,last in zip(string[::2],string[1::2]):

应该行得通。在

编辑:对不起,我不是很简洁。在

zip所做的是创建一个允许在for循环中使用两个变量的对象。在本例中,我们创建了一个zip对象,其中包含从索引0(string[::2])开始的每个其他对象的切片列表,以及从索引1(string[1::2')开始的每个其他对象的切片列表。然后我们可以使用两个迭代器(first,last)来遍历这个zip列表。在

也就是说

^{pr2}$

相关问题 更多 >