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.