Python: найкоротший спосіб переплутати елементи з двох списків


9

Я намагаюся отримати найкоротший шлях (можливий символ), щоб отримати Список 3.

Список 1 і Список 2 вже подані мені в якості аргументів і мають однакову довжину.

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

І Список 3 повинен виглядати так (так, це повинен бути список):

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

2
Ваша мета буквально вивести список конкретних l3 = ['a', 1, 'b', 2, 'c', 3, 'd', 4, 'e', 5]дав l1 = [1, 2, 3, 4, 5]і l2 = ['a', 'b', 'c', 'd', 'e']вже призначений, або це ідея , що l1і l2може бути будь-які два списки однакової довжини?
xnor

Відповіді:


13

Zip and Sum

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

Спробуйте в Інтернеті!

З’єднує два списки разом, потім додає всі кортежі, щоб скласти один об'єднаний список. Zip працює лише в тому випадку, якщо списки будуть гарантовані однакового розміру, інакше він скорочує довший список.

Додано оточення, [* ]щоб перетворити його на список, як пропонує FryAmTheEggman.


2
Якщо ви використовуєте Python 2, ви можете просто використовувати listзамість [* (...) ]+3 байтів.
Ерік Аутгольфер

7

Призначення фрагментів

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

Це на три байти довше, ніж використання рішення Джо Кінга c=[*sum(zip(b,a),())], але це чудово. Це може бути коротше ситуативно (хоча я не можу придумати, куди).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.