목록의 마지막 항목을 제외한 모든 항목을 순환하는 방법은 무엇입니까?
사용for
루프, 목록의 마지막 항목을 제외한 모든 항목을 루프하려면 어떻게 해야 합니까?저는 각 항목을 뒤에 오는 항목과 비교하여 목록을 반복해서 확인하고 싶습니다.인덱스를 사용하지 않고도 이 작업을 수행할 수 있습니까?
for x in y[:-1]
한다면y
가 제너레이터인 경우 위의 항목이 작동하지 않습니다.
시퀀스 항목을 다음과 비교하는 가장 쉬운 방법:
for i, j in zip(a, a[1:]):
# compare i (the current) to j (the following)
시퀀스의 모든 요소를 쌍으로 가져오려면 이 방법을 사용합니다(쌍으로 함수는 iiter tools 모듈의 예제에서 가져온 것입니다).
from itertools import tee, izip, chain
def pairwise(seq):
a,b = tee(seq)
b.next()
return izip(a,b)
for current_item, next_item in pairwise(y):
if compare(current_item, next_item):
# do what you have to do
마지막 값을 어떤 특별한 값과 비교해야 할 경우, 그 값을 끝까지 연결합니다.
for current, next_item in pairwise(chain(y, [None])):
만약 당신이 목록에서 n번째 항목과 n+1번째 항목을 비교하는 것을 의미한다면 당신은 또한 할 수 있습니다.
>>> for i in range(len(list[:-1])):
... print list[i]>list[i+1]
하드 코딩이 진행되지 않는다는 점에 유의하십시오.당신이 다르게 느끼지 않는 한 이것은 괜찮을 것입니다.
목록을 인스턴스화하지 않고 반복기의 다음 항목과 각 항목을 비교하는 방법
import itertools
it = (x for x in range(10))
data1, data2 = itertools.tee(it)
data2.next()
for a, b in itertools.izip(data1, data2):
print a, b
이것은 OP가 질문했어야 했던 것에 대한 답입니다. 즉, 연속적인 요소를 비교하는 목록을 통과해야 하지만(우수한 사일런트 고스트 답변), 모든 그룹(n-gram)에 대해 일반화되었습니다. 2, 3, ... n
:
zip(*(l[start:] for start in range(0, n)))
예:
l = range(0, 4) # [0, 1, 2, 3]
list(zip(*(l[start:] for start in range(0, 2)))) # == [(0, 1), (1, 2), (2, 3)]
list(zip(*(l[start:] for start in range(0, 3)))) # == [(0, 1, 2), (1, 2, 3)]
list(zip(*(l[start:] for start in range(0, 4)))) # == [(0, 1, 2, 3)]
list(zip(*(l[start:] for start in range(0, 5)))) # == []
설명:
l[start:]
인덱스에서 시작하는 목록/문서를 생성합니다.start
*list
또는*generator
모든 요소를 둘러싸는 함수로 전달합니다.zip
쓴 것처럼zip(elem1, elem2, ...)
참고:
AFAIK, 이 코드는 최대한 게으릅니다.테스트되지 않았습니다.
언급URL : https://stackoverflow.com/questions/914715/how-to-loop-through-all-but-the-last-item-of-a-list
'programing' 카테고리의 다른 글
사용자가 행을 추가할지 또는 삭제할지 결정 (0) | 2023.05.07 |
---|---|
단순 Postgre를 가져올 수 없습니다.작업에 SQL 삽입 (0) | 2023.05.07 |
두 어레이를 "+"(어레이 유니온 연산자)와 병합하는 방법 (0) | 2023.05.07 |
postgres에서 열거형 값을 삭제하는 방법은 무엇입니까? (0) | 2023.05.07 |
VB에서 DirectCast()와 CType()의 차이입니다.그물 (0) | 2023.05.07 |