목록을 튜플 목록으로 병합하려면 어떻게 해야 합니까?
다음을 달성하기 위한 피토닉 접근법은 무엇입니까?
# Original lists:
list_a = [1, 2, 3, 4]
list_b = [5, 6, 7, 8]
# List of tuples from 'list_a' and 'list_b':
list_c = [(1,5), (2,6), (3,7), (4,8)]
의 각 멤버list_c태플의 첫 번째 멤버는list_a그리고 두 번째는list_b.
Python 2의 경우:
>>> list_a = [1, 2, 3, 4]
>>> list_b = [5, 6, 7, 8]
>>> zip(list_a, list_b)
[(1, 5), (2, 6), (3, 7), (4, 8)]
Python 3의 경우:
>>> list_a = [1, 2, 3, 4]
>>> list_b = [5, 6, 7, 8]
>>> list(zip(list_a, list_b))
[(1, 5), (2, 6), (3, 7), (4, 8)]
python 3.0 zip에서는 zip 개체를 반환합니다.전화하면 리스트를 얻을 수 있습니다.list(zip(a, b)).
지도 람다를 사용할 수 있습니다.
a = [2,3,4]
b = [5,6,7]
c = map(lambda x,y:(x,y),a,b)
원래 리스트의 길이가 일치하지 않는 경우에도 유효합니다.
내장된 zip 기능을 찾고 있습니다.
당신이 문제문에서 보여준 출력은 태플이 아닌 목록입니다.
list_c = [(1,5), (2,6), (3,7), (4,8)]
을 조사하다.
type(list_c)
결과를 list_a 및 list_b에서 tuple로 하고 싶은 것을 생각하면,
tuple(zip(list_a,list_b))
이것이 비단어적인 방법인지 아닌지는 확실하지 않지만, 만약 두 목록에 동일한 수의 요소가 있다면 이것은 간단해 보입니다.
list_a = [1, 2, 3, 4]
list_b = [5, 6, 7, 8]
list_c=[(list_a[i],list_b[i]) for i in range(0,len(list_a))]
오래된 질문이고 이미 답변이 끝난 것을 알지만, 어떤 이유에서인지 저는 여전히 이 대체 해결책을 게시하고 싶습니다.어떤 빌트인 기능이 필요한 "마법"을 수행하는지는 쉽게 알 수 있지만, 스스로 할 수 있다는 것은 나쁘지 않습니다.
>>> list_1 = ['Ace', 'King']
>>> list_2 = ['Spades', 'Clubs', 'Diamonds']
>>> deck = []
>>> for i in range(max((len(list_1),len(list_2)))):
while True:
try:
card = (list_1[i],list_2[i])
except IndexError:
if len(list_1)>len(list_2):
list_2.append('')
card = (list_1[i],list_2[i])
elif len(list_1)<len(list_2):
list_1.append('')
card = (list_1[i], list_2[i])
continue
deck.append(card)
break
>>>
>>> #and the result should be:
>>> print deck
>>> [('Ace', 'Spades'), ('King', 'Clubs'), ('', 'Diamonds')]
또는map개봉 시:
>>> list(map(lambda *x: x, list_a, list_b))
[(1, 5), (2, 6), (3, 7), (4, 8)]
>>>
사용하지 않고 하나의 대안으로zip:
list_c = [(p1, p2) for idx1, p1 in enumerate(list_a) for idx2, p2 in enumerate(list_b) if idx1==idx2]
1등 1등, 2등 2등 2등 1등 2등 2등 1등 2등 2등 2등 1등 1등 1등 2등 1등 2등 2등 2등 2등 1등두 목록의 가능한 모든 조합은 다음과 같습니다.
list_d = [(p1, p2) for p1 in list_a for p2 in list_b]
나처럼 튜플 목록이 아닌 목록(2D 목록)으로 변환해야 하는 경우 다음을 수행할 수 있습니다.
list(map(list, list(zip(list_a, list_b))))
다음과 같이 2D 목록을 반환해야 합니다.
[[1, 5],
[2, 6],
[3, 7],
[4, 8]]
언급URL : https://stackoverflow.com/questions/2407398/how-to-merge-lists-into-a-list-of-tuples
'source' 카테고리의 다른 글
| 랜덤 컬러 발생기 (0) | 2022.11.12 |
|---|---|
| PHPExcel 자동 크기 열 폭 (0) | 2022.11.12 |
| 팬더에서 끈에 목록 중 하나가 포함되어 있는지 어떻게 테스트합니까? (0) | 2022.11.12 |
| MySQL을 outfile로 내보내기 : CSV 이스케이프 문자 (0) | 2022.11.12 |
| 그룹별 절이 있는 SQL 업데이트 쿼리 (0) | 2022.11.12 |