programing

Python 목록에서 인접한 항목 쌍을 통해 반복

muds 2023. 5. 16. 23:13
반응형

Python 목록에서 인접한 항목 쌍을 통해 반복

Python에서 다음과 같은 방법으로 목록을 반복할 수 있습니까(이 코드를 의사 코드로 처리)

a = [5, 7, 11, 4, 5]
for v, w in a:
    print [v, w]

그리고 그것은 생산될 것입니다.

[5, 7]
[7, 11]
[11, 4]
[4, 5]

목록 자체가 첫 번째 요소를 산스할 수 있습니다.

a = [5, 7, 11, 4, 5]

for previous, current in zip(a, a[1:]):
    print(previous, current)

이는 목록에 요소가 없거나 요소가 하나만 있는 경우에도 작동합니다(이 경우).zip빈 반복 가능 항목과 코드를 반환합니다.for루프가 실행되지 않음).생성기에서는 작동하지 않고 시퀀스에서만 작동합니다.tuple,list,str등).

레시피에서:

from itertools import tee

def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return zip(a, b)

for v, w in pairwise(a):
    ...

그러기 위해서는 다음을 수행해야 합니다.

a =  [5, 7, 11, 4, 5]
for i in range(len(a)-1):
    print [a[i], a[i+1]]

Python의 목록(원형 방식)에서 쌍을 넘어 거의 말 그대로 반복합니다.

def pairs(seq):
    i = iter(seq)
    prev = next(i)
    for item in i:
        yield prev, item
        prev = item
>>> a = [5, 7, 11, 4, 5]
>>> for n,k in enumerate(a[:-1]):
...     print a[n],a[n+1]
...
5 7
7 11
11 4
4 5

언급URL : https://stackoverflow.com/questions/5764782/iterate-through-adjacent-pairs-of-items-in-a-python-list

반응형