Python: İki listeden öğeleri eklemenin en kısa yolu


9

Liste 3 elde etmek için en kısa yolu (mümkün karakter) almaya çalışıyorum.

Liste 1 ve Liste 2 zaten bana argüman olarak verilmiştir ve aynı uzunluktadır.

l1 = [1, 2, 3, 4, 5]
l2 = ['a', 'b', 'c', 'd', 'e']

Ve Liste 3 şöyle görünmelidir (evet, bir liste olması gerekir):

l3 = ['a', 1, 'b', 2, 'c', 3, 'd', 4, 'e', 5]

2
Belirli listesi hedef anlamıyla çıktı mı l3 = ['a', 1, 'b', 2, 'c', 3, 'd', 4, 'e', 5]verilmiş l1 = [1, 2, 3, 4, 5]ve l2 = ['a', 'b', 'c', 'd', 'e']zaten atanmış veya fikir olduğunu l1ve l2aynı uzunluktaki herhangi iki liste olabilir?
xnor

Yanıtlar:


13

Zip ve Toplam

[*sum(zip(l2,l1),())]

Çevrimiçi deneyin!

İki listeyi birlikte sıkıştırdıktan sonra birleştirilmiş liste yapmak için tüm tupl'leri ekler. Zip yalnızca listelerin aynı boyutta olması garanti edilirse çalışır, aksi takdirde daha uzun listeyi kısaltır.

[* ]FryAmTheEggman'ın önerdiği gibi bir listeye dönüştürmek için çevreyi ekledi.


2
Python 2 kullanıyorsanız, +3 bayt listyerine sadece kullanabilirsiniz [* (...) ].
Outgolfer Erik

7

Dilim ataması

c=a*2
c[1::2]=a
c[::2]=b

Bu, Jo King'in çözümünü kullanmaktan üç bayt daha uzun c=[*sum(zip(b,a),())], ancak şık. Durumsal olarak daha kısa olabilir (yine de nerede olduğunu düşünemiyorum).

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.