2024-09-28 17:04:17 发布
网友
我使用了一个string.split(':')函数,这样我的列表包括名字:姓对(例如["John", "Doe", "Alex", "Jacobson" ...]
string.split(':')
["John", "Doe", "Alex", "Jacobson" ...]
我知道如何使用一个基本的for循环,在这个循环中,我每次将索引增加两个(并与列表的长度进行比较),但是我想用一种更具体于Python的方式来处理它。在
有没有更干净的循环结构可以让我考虑前两个索引,然后再考虑下两个,等等?在
>>> import itertools >>> L = ["John", "Doe", "Alex", "Jacobson"] >>> for fname, lname in zip(*itertools.repeat(iter(L), 2)): print(fname, lname) ... John Doe Alex Jacobson
调用列表上的iter和zip:
iter
zip
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)每次只消耗迭代器中的两个元素,直到迭代器用尽,所以我们最终得到的是名字和姓氏配对。它在某种程度上相当于:
zip(it,it)
for first,last in zip(string[::2],string[1::2]):
应该行得通。在
编辑:对不起,我不是很简洁。在
zip所做的是创建一个允许在for循环中使用两个变量的对象。在本例中,我们创建了一个zip对象,其中包含从索引0(string[::2])开始的每个其他对象的切片列表,以及从索引1(string[1::2')开始的每个其他对象的切片列表。然后我们可以使用两个迭代器(first,last)来遍历这个zip列表。在
string[::2]
string[1::2'
first,last
也就是说
调用列表上的
iter
和zip
:
^{pr2}$zip(it,it)
每次只消耗迭代器中的两个元素,直到迭代器用尽,所以我们最终得到的是名字和姓氏配对。它在某种程度上相当于:应该行得通。在
编辑:对不起,我不是很简洁。在
zip所做的是创建一个允许在for循环中使用两个变量的对象。在本例中,我们创建了一个zip对象,其中包含从索引0(
string[::2]
)开始的每个其他对象的切片列表,以及从索引1(string[1::2'
)开始的每个其他对象的切片列表。然后我们可以使用两个迭代器(first,last
)来遍历这个zip列表。在也就是说
^{pr2}$相关问题 更多 >
编程相关推荐