2014-02-27 186 views
2

我有一個列表的其餘部分Python的壓縮列表的第一個元素與元素

mylist = [(0,0,0),(1,1,1),(2,2,2),(3,3,3)] 

我希望能夠找到一個代碼保存方法與列表元素mylist[1:]的其餘部分壓縮的第一要素mylist[0]爲了得到一個新名單爲:

[((0,0,0),(1,1,1)),((0,0,0),(2,2,2)),((0,0,0),(3,3,3))] 
+0

不知道爲什麼你會想* *這樣做。 –

回答

9

使用zip

>>> mylist = [(0,0,0),(1,1,1),(2,2,2),(3,3,3)] 
>>> zip([mylist[0]]*(len(mylist)-1), mylist[1:]) 
[((0, 0, 0), (1, 1, 1)), ((0, 0, 0), (2, 2, 2)), ((0, 0, 0), (3, 3, 3))] 

列表理解更簡單:

>>> [ (mylist[0], sublist) for sublist in mylist[1:] ] 
[((0, 0, 0), (1, 1, 1)), ((0, 0, 0), (2, 2, 2)), ((0, 0, 0), (3, 3, 3))] 
+0

我查看了編輯歷史記錄,以確保您沒有狙擊iCodez以獲得額外信用。你沒有。 +1 –

8

我不認爲zip有必要在這裏。一個list comprehension將正常工作:

>>> mylist = [(0,0,0),(1,1,1),(2,2,2),(3,3,3)] 
>>> [(mylist[0], x) for x in mylist[1:]] 
[((0, 0, 0), (1, 1, 1)), ((0, 0, 0), (2, 2, 2)), ((0, 0, 0), (3, 3, 3))] 
>>> 
4

使用地圖:

map(lambda x:(mylist[0],x),mylist[1:]) 

輸出:

[((0, 0, 0), (1, 1, 1)), ((0, 0, 0), (2, 2, 2)), ((0, 0, 0), (3, 3, 3))] 
+0

+1,但地圖只是一個理解的一半,帶有一個尷尬的lambda。 –

相關問題