목록을 2개씩 반복하려면 어떻게 해야 하나요?
Python 목록과 2개의 목록 항목을 한번에 처리하고 싶습니다.다른 언어로는 다음과 같습니다.
for(int i = 0; i < list.length(); i+=2)
{
// do something with list[i] and list[i + 1]
}
어떻게 하면 이 일을 할 수 있을까요?
를 사용할 수 있습니다.range
스텝 사이즈가 2인 경우:
파이썬 2
for i in xrange(0,10,2):
print(i)
파이썬 3
for i in range(0,10,2):
print(i)
주의: 사용xrange
Python 2로 대체range
전체 목록이 아니라 반복 가능한 개체를 생성하기 때문에 더 효율적이기 때문입니다.
이 구문을 사용할 수도 있습니다(L[start:stop:step]
):
mylist = [1,2,3,4,5,6,7,8,9,10]
for i in mylist[::2]:
print i,
# prints 1 3 5 7 9
for i in mylist[1::2]:
print i,
# prints 2 4 6 8 10
여기서 첫 번째 자리는 시작 인덱스(기본값에서 목록 시작 또는 0)이고 두 번째 자리는 끝 슬라이스 인덱스(기본값에서 목록 끝)이고 세 번째 자리는 오프셋 또는 스텝입니다.
가장 간단한 것은 다음과 같습니다.
it = iter([1,2,3,4,5,6])
for x, y in zip(it, it):
print x, y
Out: 1 2
3 4
5 6
추가 수입품 같은 건 없어요.그리고 제 생각에는 매우 우아합니다.
Python 2.6 이후를 사용하는 경우 모듈의 grouter 레시피를 사용할 수 있습니다.
from itertools import izip_longest
def grouper(n, iterable, fillvalue=None):
"grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
다음과 같이 호출합니다.
for item1, item2 in grouper(2, l):
# Do something with item1 and item2
Python 3.x에서는 다음을 사용해야 합니다.zip_longest
대신izip_longest
.
nums = range(10)
for i in range(0, len(nums)-1, 2):
print nums[i]
좀 지저분하긴 하지만 효과가 있어
이는 izip_longest 솔루션만큼 빠르지 않을 수 있지만(실제로 테스트하지 않았지만) python < 2.6 (izip_longest는 2.6에서 추가됨)과 함께 작동합니다.
from itertools import imap
def grouper(n, iterable):
"grouper(3, 'ABCDEFG') --> ('A,'B','C'), ('D','E','F'), ('G',None,None)"
args = [iter(iterable)] * n
return imap(None, *args)
2.3보다 이전 버전을 사용해야 하는 경우 imap 대신 삽입 맵을 사용할 수 있습니다.단점은 채우기 값을 사용자 지정할 수 없다는 것입니다.
리스트의 구조를 제어할 수 있는 경우, 가장 중요한 것은 리스트의 구조를 다음과 같이 변경하는 것입니다.
l=[1,2,3,4]
대상:
l=[(1,2),(3,4)]
그러면 루프가 다음과 같이 됩니다.
for i,j in l:
print i, j
언급URL : https://stackoverflow.com/questions/2990121/how-do-i-loop-through-a-list-by-twos
'programing' 카테고리의 다른 글
Javascript 배열 검색 및 문자열 제거 (0) | 2023.01.21 |
---|---|
Jupyter 노트북의 tqdm은 새로운 진행 표시줄을 반복적으로 인쇄합니다. (0) | 2023.01.21 |
목록에서 가장 긴 문자열을 선택하는 Python의 가장 효율적인 방법? (0) | 2023.01.21 |
mysql LOAD DATA/mysqlimport 성능 향상? (0) | 2023.01.21 |
팬더 데이터 프레임 목록 연결 (0) | 2023.01.21 |