2개의 리스트에 걸쳐 반복하여 각 리스트에서1개의 요소를 얻는 더 좋은 방법이 있을까요?
위도 및 경도 목록이 있으며 위도와 경도 쌍에 걸쳐 반복해야 합니다.
다음을 수행하는 것이 좋습니까?
A. 목록의 길이가 같다고 가정합니다.
for i in range(len(Latitudes)): Lat,Long=(Latitudes[i],Longitudes[i])
B. 또는:
for Lat,Long in [(x,y) for x in Latitudes for y in Longitudes]:
(B는 틀립니다).이렇게 하면 모든 쌍이 표시됩니다.itertools.product()
)
각각의 상대적인 장점에 대한 생각은? 아니면 어떤 것이 더 비단뱀 같은가?
이것은 당신이 얻을 수 있는 최대한의 피조어입니다.
for lat, long in zip(Latitudes, Longitudes):
print(lat, long)
또 다른 방법은 다음과 같습니다.map
.
>>> a
[1, 2, 3]
>>> b
[4, 5, 6]
>>> for i,j in map(None,a,b):
... print i,j
...
1 4
2 5
3 6
zip과 비교한 맵 사용의 한 가지 차이점은 zip을 사용하면 새 목록의 길이가
최단 리스트의 길이와 같습니다.예를 들어 다음과 같습니다.
>>> a
[1, 2, 3, 9]
>>> b
[4, 5, 6]
>>> for i,j in zip(a,b):
... print i,j
...
1 4
2 5
3 6
동일한 데이터에 대한 지도 사용:
>>> for i,j in map(None,a,b):
... print i,j
...
1 4
2 5
3 6
9 None
많은 사랑을 볼 수 있어서 좋다.zip
여기 답변에 있습니다.
단, 3.0 이전 버전의 python을 사용하는 경우,itertools
표준 라이브러리의 모듈에는izip
반복 가능(특히 격자/길이 목록이 매우 긴 경우)을 반환하는 함수입니다.
python 3 이후zip
처럼 행동하다izip
.
Latitude 및 Latitude 목록이 크고 로딩이 느릴 경우:
from itertools import izip
for lat, lon in izip(latitudes, longitudes):
process(lat, lon)
또는 for-loop을 피하고 싶은 경우
from itertools import izip, imap
out = imap(process, izip(latitudes, longitudes))
2개의 리스트의 요소를 동시에 반복하는 것을 ziping이라고 합니다.python은 여기에 기재되어 있는 기능을 내장하고 있습니다.
>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> zipped
[(1, 4), (2, 5), (3, 6)]
>>> x2, y2 = zip(*zipped)
>>> x == list(x2) and y == list(y2)
True
[예시는 pydocs에서 따온 것]
고객의 경우는, 다음과 같이 간단하게 됩니다.
for (lat, lon) in zip(latitudes, longitudes):
... process lat and lon
for Lat,Long in zip(Latitudes, Longitudes):
이 투고가 도움이 되었습니다.zip()
몇 년 늦은 건 알지만 그래도 기여하고 싶어요이건 파이썬3에 있어요
주의: python 2.x에서는zip()
는 튜플 목록을 반환합니다.Python 3.x에서는zip()
반복기를 반환합니다. itertools.izip()
in python 2.x ==zip()
python 3.x의 경우
튜플 목록을 작성하는 것처럼 보이므로, 다음 코드는 여러분이 하고 있는 일을 성취하기 위한 가장 버마적인 방법입니다.
>>> lat = [1, 2, 3]
>>> long = [4, 5, 6]
>>> tuple_list = list(zip(lat, long))
>>> tuple_list
[(1, 4), (2, 5), (3, 6)]
또는 다음을 사용할 수 있습니다.list comprehensions
(또는list comps
더 복잡한 작업이 필요한 경우).목록 압축도 다음과 같은 속도로 실행됩니다.map()
, 몇 나노초 혹은 몇 나노초, 그리고 Pythonic과 비교해서 생각되는 것의 새로운 표준이 되고 있다.map()
.
>>> lat = [1, 2, 3]
>>> long = [4, 5, 6]
>>> tuple_list = [(x,y) for x,y in zip(lat, long)]
>>> tuple_list
[(1, 4), (2, 5), (3, 6)]
>>> added_tuples = [x+y for x,y in zip(lat, long)]
>>> added_tuples
[5, 7, 9]
언급URL : https://stackoverflow.com/questions/1919044/is-there-a-better-way-to-iterate-over-two-lists-getting-one-element-from-each-l
'programing' 카테고리의 다른 글
로그아웃 후 다시 로그인하지 않고 .bashrc 설정을 새로고침하려면 어떻게 해야 합니까? (0) | 2023.04.16 |
---|---|
NSURLC Connection을 사용하여 신뢰할 수 없는 증명서를 SSL로 접속하려면 어떻게 해야 합니까? (0) | 2023.04.16 |
C#에서 문자를 반복하는 가장 좋은 방법 (0) | 2023.04.16 |
MVVM 및 VM 컬렉션 (0) | 2023.04.16 |
UIStackView에서 프로그래밍 방식으로 보기 추가 (0) | 2023.04.16 |