Listedeki listeleri nasıl sıkıştırabilirim?


92

Aşağıdaki liste listesini sıkıştırmak istiyorum:

>>> zip([[1,2], [3,4], [5,6]])
[[1,3,5], [2,4,6]]

Bu, mevcut zipuygulamayla ancak liste ayrı bileşenlere bölünürse başarılabilir :

>>> zip([1,2], [3,4], [5,6])
   (1, 3, 5), (2, 4, 6)]

Listenin nasıl bölüneceğini ve tek tek öğelerin nasıl aktarılacağını çözemiyorum zip. Fonksiyonel bir çözüm tercih edilir.

Yanıtlar:


146

Bunu dene:

>>> zip(*[[1,2], [3,4], [5,6]])
[(1, 3, 5), (2, 4, 6)]

Bağımsız Değişken Listelerini Açma konusuna bakın :

Tersi durum, argümanlar zaten bir listede veya tuple'da olduğunda, ancak ayrı konumsal argümanlar gerektiren bir işlev çağrısı için paketten çıkarılması gerektiğinde ortaya çıkar. Örneğin, yerleşik range () işlevi ayrı başlangıç ​​ve bitiş argümanları bekler. Ayrı olarak kullanılamazlarsa, argümanları bir listeden veya tuple'dan çıkarmak için işlev çağrısını * -operator ile yazın:

>>> range(3, 6)             # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> range(*args)            # call with arguments unpacked from a list
[3, 4, 5]

4
Bunun nasıl çalıştığını öğrenmek için docs.python.org/tutorial/… bakın .
— ameer

2
Milyonlarca giriş içeren bir listeniz olması durumunda bir alternatif görmek isterim. Bir işlev çağrısındaki bir milyon öğeyi açmak iyi bir fikir olmayabilir ...
— Blixt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.