mrv*_*rvn 85 python loops list
可能的重复:
在Python中迭代列表(当前,下一个)
迭代列表中的每两个元素
是否可以在Python中以下列方式迭代列表(将此代码视为伪代码)?
a = [5, 7, 11, 4, 5]
for v, w in a:
print [v, w]
Run Code Online (Sandbox Code Playgroud)
它应该产生
[5, 7]
[7, 11]
[11, 4]
[4, 5]
Run Code Online (Sandbox Code Playgroud)
hlu*_*luk 116
你可以使用这个zip功能:
a = [5, 7, 11, 4, 5]
for v, w in zip(a[:-1], a[1:]):
print [v, w]
Run Code Online (Sandbox Code Playgroud)
Joc*_*zel 85
来自itertools receipes:
from itertools import tee, izip
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return izip(a, b)
for v, w in pairwise(a):
...
Run Code Online (Sandbox Code Playgroud)
San*_*dri 59
要做到这一点,你应该这样做:
a = [5, 7, 11, 4, 5]
for i in range(len(a)-1):
print [a[i], a[i+1]]
Run Code Online (Sandbox Code Playgroud)
Gab*_*abe 13
几乎逐字逐句迭代Python中的列表(循环方式)中的对:
def pairs(seq):
i = iter(seq)
prev = next(i)
for item in i:
yield prev, item
prev = item
Run Code Online (Sandbox Code Playgroud)
Rom*_*est 11
另一种方法是itertools.pairwise(Python 3.10 或更高版本):
from itertools import pairwise
temp = [-39.5, -27.5, -15.5, -3.5, 8.5, 20.5, 32.5, 44.5, 56.5, 68.5, 80.5, 92.5,104.5]
res = list(pairwise(temp))
Run Code Online (Sandbox Code Playgroud)
[(-39.5, -27.5), (-27.5, -15.5), (-15.5, -3.5), (-3.5, 8.5), (8.5, 20.5), (20.5, 32.5), (32.5, 44.5), (44.5, 56.5), (56.5, 68.5), (68.5, 80.5), (80.5, 92.5), (92.5, 104.5)]
Run Code Online (Sandbox Code Playgroud)
>>> 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89973 次 |
| 最近记录: |