2017-06-02 114 views
0

作出新的名單上有兩個列表的Python:取兩個列表,並通過將它們合併

list1 = ["john", "kelvin", "harry", "rob", "jenny", "donne", "justin", "sam", "peter", "kitty"] 
list2 = ["radha", "mohan", "pankaj", "sikha", "samarth"] 

我想合併這兩個的方式,我得到的詞典列表名單中應該有兩個來自list1的人員和來自list2的1個人員。

example = [{"john", "kelvin", "radha"}, {"harry", "rob", "mohan"}, ......] 
+4

你到目前爲止嘗試過什麼? – khelwood

+7

如果你想製作字典,鑰匙在哪裏? –

+0

組= [] 爲i的範圍((LEN(list1的)+ LEN(列表2))/ 3): \t爲J,K中Bteam,Pteam: \t \t團伙= {} –

回答

1

這裏就是要爲你的榜樣輸入工作:

list1 = ["john", "kelvin", "harry", "rob", "jenny", "donne", "justin", "sam", "peter", "kitty"] 
list2 = ["radha", "mohan", "pankaj", "sikha", "samarth"] 

list3 = [] 

for i in xrange(len(list2)): 
    temp_list = [list1[2*i], list1[1+(2*i)], list2[i]] 
    list3.append(temp_list) 


print list3 

python 2.x工作,只是改變print聲明,使其在python 3.x

乾杯

在這裏工作是輸出:

套2組+ 1的元素

[['john', 'kelvin', 'radha'], ['harry', 'rob', 'mohan'], ['jenny', 'donne', 'pankaj'], ['justin', 'sam', 'sikha'], ['peter', 'kitty', 'samarth']]

+1

@amanroy,這會給你一個嵌套列表,這應該足以供你使用:) – TheDarkKnight

+0

謝謝@TheDarkKnight。 –

+0

很酷。很好地使用奇數/偶數索引。 – DineshKumar

0

所以,只要按照你所說的做一個列表,實際上最終會成爲一組列表(只是提及它)。

output = [] 
for i in list2: 
    output.append({i, list1.pop(), list1.pop()}) 

如果你想要一個嵌套列表只是改變{}括號[]

此外,這將清空list1,所以如果您選擇使用這種方式,並且稍後需要list1,則值得在內存中保留副本。

編輯:

正如在評論中指出,它看起來像你想從list1開始進行迭代。在這種情況下,請使用list1.pop(0),其中0是要從列表中彈出的索引。

+0

這個'pop'元素不會從數組的* end *中出現嗎? – TheDarkKnight

+1

如果這很重要,你可以傳入想要彈出的索引,所以如果你想彈出開始,只需調用'list1.pop(0)'而不是 – RHSmith159

+1

看看OP的例子,我認爲*是*情況:) – TheDarkKnight

1

列表:

ls1 = list("ABCDEF") 
ls2 = list("123") 

iterls1 = iter(ls1) 
ls3 = [set(x) for x in zip(iterls1, iterls1, ls2)] 
print(ls3) 
# [{'A', '1', 'B'}, {'2', 'D', 'C'}, {'3', 'F', 'E'}] 
0
list1 = ["john", "kelvin", "harry", "rob", "jenny", "donne", "justin", "sam", "peter", "kitty"] 
list2 = ["radha", "mohan", "pankaj", "sikha", "samarth"] 

list3 = [[list1[2*i],list1[2*i+1],list2[i]] for i in xrange(len(list2))] 

這應該這樣做,使用列表理解它看起來更加整潔。

0

VPfB的答案真的是pythonic,很好用iter
這裏是本着同樣的精神另一種變化:

list3 = list(map(set, zip(list1[::2], list1[1::2], list2))) 

的主要區別是:

而不是使用列表理解的 map
  • 投用zip生成到集合的元組。
  • 使用切片代替iter