我使用的是string.split(':')
功能,使我的清單包括姓名的:名字對(例如["John", "Doe", "Alex", "Jacobson" ...]
乾淨的方式來遍歷在Python中成對的列表?
我知道如何使用一個基本的for循環,我將有兩名每次遞增指數(並比較長),但我想以更具體Python的方式處理它
是否有任何更清晰的循環構造,我可以採取哪些讓我考慮前兩個指標,然後接下來的兩個, etc?
我使用的是string.split(':')
功能,使我的清單包括姓名的:名字對(例如["John", "Doe", "Alex", "Jacobson" ...]
乾淨的方式來遍歷在Python中成對的列表?
我知道如何使用一個基本的for循環,我將有兩名每次遞增指數(並比較長),但我想以更具體Python的方式處理它
是否有任何更清晰的循環構造,我可以採取哪些讓我考慮前兩個指標,然後接下來的兩個, etc?
for first,last in zip(string[::2],string[1::2]):
應該工作
編輯:對不起,我並不是很簡潔。
zip所做的是創建一個允許for循環中有兩個變量的對象。在這種情況下,我們創建一個zip對象,其中包含從索引0(string[::2]
)開始的所有其他對象的切片列表以及從索引1(string[1::2'
)開始的每個其他對象的切片列表。然後我們可以使用兩個迭代器(first,last
)遍歷該zip列表。
即。
>>> l1 = [1,2,3,4]
>>> l2= [5,6,7,8]
>>> zip(l1,l2)
<zip object at 0x02241030>
>>> for l,k in zip(l1,l2): print(l+k)
...
6
8
10
12
>>> for l,k in zip(l1,l2): print (l,k)
...
1 5
2 6
3 7
4 8
>>> import itertools
>>> L = ["John", "Doe", "Alex", "Jacobson"]
>>> for fname, lname in zip(*itertools.repeat(iter(L), 2)): print(fname, lname)
...
John Doe
Alex Jacobson
您可以使用拼接,即 假設所有的名字都在X
fname = x[::2]
lname = x[1::2]
y = []
for a,b in zip(fname,lname):
y.append({'fname':a,
'lname':b,})
現在你可以很容易地通過迭代,
for i in y:
print i['fname'], i['lname']
呼叫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)
每次都從我們的迭代器中消耗兩個元素,直到迭代器耗盡,所以我們最終得到配對的姓和名。這是有點相當於:
In [86]: l = ["John", "Doe", "Alex", "Jacobson"]
In [87]: it = iter(l)
In [88]: f,l = next(it),next(it)
In [89]: f,l
Out[89]: ('John', 'Doe')
In [91]: f,l
Out[91]: ('Alex', 'Jacobson')
哪些可以推廣到''n'作爲['zip(* [iter(xs)] * n)'](http://stackoverflow.com/a/16758257/ 478656) – TessellatingHeckler
https://docs.python.org/2/library/functions.html#zip – asf107
的可能的複製【什麼是最「Python化」的方式來遍歷一個列表chunks?](http://stackoverflow.com/questions/434287/what-is-the-most-pythonic-way-to-iterate-over-a-list-in-chunks)和[另一種方法來拆分列表成組的n](http://stackoverflow.com/questions/1624883/alternative-way-to-split-a-list-into-groups-of-n/1625023)和[你如何將列表分成均勻Python中的大小塊](http://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks-in-python) – TessellatingHeckler