2013-01-11 17 views

cevap

11

liste birleştirme sadece + operatörü ile yapılır.

yüzden

total = [] 
for i in [['a','b','c'],['d','e','f']]: 
    total += i 

print total 
+0

Bu en basit yöntem olduğu en iyi çözümdür. +1. Bununla birlikte, aşağıdakileri yapabilirsiniz: 'new_list = old_list1 + old_list2'. Seninki de aynı şeyi yapıyor, ama önce onları bir liste halinde bir araya getirmene gerek yok. –

+0

Evet, sadece keyfi bir liste için çalışmasını istedim. Bildiğim kadarıyla, toplamı ([], [list1, list2, list3]) 'gibi bir şey yapabildiğinizi öğrendim. Çünkü toplam, + operatörü arar. Bu, [[]' birleştirme işlemi için, hepsini birleştirir. senin için. – will

3

Bu yapacağını:

a = [['a','b','c'],['d','e','f']] 
reduce(lambda x,y:x+y,a) 
+0

NEDEN ?! bu tamamen tepenin üstündedir, neden sadece a = [['a', 'b', 'c'], ['d', 'e', ​​'f']] '' a [0] + a [1] ' – will

+0

Eğer liste [[a ',' b ',' c '], [' d ',' e ',' f '], [' d ',' ',' f ']]? – Sibi

+0

açıkçası değil, ama bu sorunun ne olduğu, ve keyfi uzun düz listeler için çalışmasını istiyorsanız, [cevap] (http://stackoverflow.com/a/14278710/432913) çalışır ve çok daha okunabilir – will

2

Dene:

sum([['a','b','c'], ['d','e','f']], []) 

Veya daha uzun ancak daha hızlı:

[i for l in [['a', 'b', 'c'], ['d', 'e', 'f']] for i in l] 

Veya @AshwiniChaudhary olarak itertools.chain kullanmak önerdi:

list(itertools.chain(*[['a', 'b', 'c'], ['d', 'e', 'f']])) 
+4

'sum()' bu tür şeyler için kullanılmamalıdır. [Docs] (http://docs.python.org/2/library/functions.html#sum) derken: ** Bir dizi yinelenebilir diziyi birleştirmek için itertools.chain() öğesini kullanmayı düşünün. ** –

0
mergedlist = list_letters[0] + list_letters[1] 

Bu statik uzunlukta bir liste var ve her zaman liste anlama kullanarak ilk iki

>>> list_letters=[['a','b'],['c','d']] 
>>> list_letters[0]+list_letters[1] 
['a', 'b', 'c', 'd'] 
9

birleştirmek istediğiniz varsayar:

ar = [['a','b','c'],['d','e','f']] 
concat_list = [j for i in ar for j in i] 
+0

Bu, en hızlı yol, fwiw. Cpu döngüleri açısından. –

+1

Tamamen en iyi şekilde, en iyi şekilde. Ama nasıl çalışır? –

1

Liste nesnesinin "genişlet" yöntemini deneyin:

>>> res = [] 
>>> for list_to_extend in range(0, 10), range(10, 20): 
     res.extend(list_to_extend) 
>>> res 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 

Veya kısa:

>>> res = [] 
>>> map(res.extend, ([1, 2, 3], [4, 5, 6])) 
>>> res 
[1, 2, 3, 4, 5, 6] 
İlgili konular