파이썬 : 두 목록에서 항목을 인터리빙하는 가장 짧은 방법


9

List 3을 얻는 가장 짧은 방법 (문자 가능)을 얻으려고합니다.

List 1과 List 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']이미 할당, 또는 생각은 그 l1l2같은 길이의 두 개의리스트가 될 수 있을까?
xnor

답변:


13

우편 번호 및 합계

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

온라인으로 사용해보십시오!

두 목록을 압축 한 다음 모든 튜플을 추가하여 하나의 결합 된 목록을 만듭니다. zip은 목록의 크기가 동일한 경우에만 작동하고, 그렇지 않으면 더 긴 목록을 자릅니다.

[* ]FryAmTheEggman이 제안한대로 목록으로 변환하기 위해 주변 을 추가했습니다 .


2
Python 2를 사용 list하는 [* (...) ]경우 +3 바이트 대신 사용할 수 있습니다 .
아웃 골퍼 에릭 9

7

슬라이스 할당

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

이것은 Jo King의 솔루션을 사용하는 것보다 3 바이트 더 길지만 c=[*sum(zip(b,a),())]깔끔합니다. 상황에 따라 더 짧을 수도 있습니다 (그러나 어디를 생각할 수는 없습니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.