使用枚举一次访问两个列表元素

时间:2013-07-15 06:14:18

标签: list python-2.7 for-loop range enumerate

data = ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff', 'ggg', 'hhh', 'iii', 'jjj']

这完全符合我希望它的工作方式。

i = 0
print
for i in range(len(data) - 1):
    print data[i] + ' ' + data[i + 1]

以下代码不起作用。有没有办法让它与enumerate一起使用,或者上述解决方案是最简单/最好的方式?

print
for i, d in enumerate(data):
    print d + ' ' + d[i + 1] # IndexError: string index out of range

或者是否有另一种方法可以一次访问两个元素?

1 个答案:

答案 0 :(得分:1)

enumerate函数中,i表示列表元素的索引位置,d表示i索引位置的元素值。因此,当您执行d[i+1]时,您正在切换d变量。

i的值等于data块中enumerate变量的最后一个元素时,访问i+1中的data i.e., data[i+1]元素会抛出一个索引错误(因为i+1中不存在data元素。既然,您希望同时使用ii+1元素,单独使用enumerate可能无法完全解决问题。如果您热衷于使用它,则必须将代码更改为

for i,d in enumerate(data):
    if i < (len(data) - 1):
        print d + ' ' + data[i+1]