1

我可以使用以下“ Pythonic ”语法在不指定索引的情况下循环遍历 Python (v.2.6) 列表:

the_list = [2, 3, 5, 7, 11, 13]
for item in the_list:
    print item + 2

但是如果我想对两个连续的索引执行操作,我想我必须指定索引号,并相应地更改for循环范围:

the_list = [2, 3, 5, 7, 11, 13]
for i in xrange(len(the_list)-1):
    print the_list[i] + the_list[i+1]

那是对的吗?或者有没有办法保持 Pythonic 并避免使用表达式xrange(len(the_list)-1)

4

1 回答 1

2

我喜欢模块pairwise文档中列出的食谱:itertools

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

然后...

for x, x_next in pairwise(the_list):
    ...

您也可以只zip列出带有自身切片的列表:

for x, x_next in zip(the_list, the_list[1:]):
    ...
于 2012-06-01T21:10:43.753 回答