2013-03-26 86 views
3

「給定列表1和列表2的長度相同,創建一個新列表,其中包含list1的第一個元素,後跟list2的第一個元素,後面跟着list1的第二個元素,後面跟着list2的第二個元素(換句話說,新列表應該由list1和list2的交替元素組成)例如,如果list1包含[1,2,3]和list2包含[4,5,6],那麼新列表應該包含[1,4,2,5,3,6]。將新列表與變量list3關聯起來。「Python - 使用相同長度的現有列表創建新列表?

list1 = [] 
    list2 = [] 
    list3 = [] 
    for i in range(len(list3)): 
     list3.append(list1) 
     list3.append(list2) 

我很確定這是錯誤的。我應該改進什麼?順便說一句,我相信這必須包括len和range。

+2

以及你不會進入你的for循環,因爲len爲0,當你到達那裏...這就是一件事 – 2013-03-26 05:20:12

+1

相當肯定?你是否運行你的代碼? – monkut 2013-03-26 05:21:48

回答

0

請看下面的代碼片段,也許這將有助於

>>> list1 = [1,2,3] 
>>> list2 = [4,5,6] 
>>> list3 = [] 
>>> for i in range(len(list1)): 
...  list3.append(list1[i]) 
...  list3.append(list2[i]) 
... 
>>> list3 
[1, 4, 2, 5, 3, 6] 
+1

在我看來,更好的辦法是對於zip(list1,list2)中的x1,x2:'。 – wim 2013-03-26 05:26:28

+0

@wim是的,這也可以。謝謝你指出。 – 2013-03-26 05:28:58

5

我會用一個列表理解去做,而不是lenrange什麼。例如: -

>>> list1 = [1, 2, 3] 
>>> list2 = ['a', 'b', 'c'] 
>>> zip(list1, list2) 
[(1, 'a'), (2, 'b'), (3, 'c')] 
>>> [x for pair in zip(list1, list2) for x in pair] 
[1, 'a', 2, 'b', 3, 'c'] 
5
>>> from itertools import chain 
>>> list1 = [1, 2, 3] 
>>> list2 = [4, 5, 6] 
>>> list(chain.from_iterable(zip(list1, list2))) 
[1, 4, 2, 5, 3, 6] 
2
list1 = [1, 2, 3] 
list2 = [4, 5, 6] 
list3 = [] 

for x1, x2 in zip(list1, list2): 
    list3.extend([x1, x2]) 
相關問題