【问题标题】:Accessing two list elements at a time with enumerate使用枚举一次访问两个列表元素
【发布时间】:2013-07-15 06:14:18
【问题描述】:
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

或者还有其他方法可以同时访问两个元素吗?

【问题讨论】:

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


    【解决方案1】:

    在您的enumerate 函数中,i 表示列表元素的索引位置,d 表示出现在第 i 索引位置的元素的值。所以,当你在做 d[i+1] 时,你正在切片 d 变量。

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

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

    【讨论】:

    • 谢谢。我仍然想弄清楚为什么它是data[i+1] 而不是d[i+1],但我会到达那里。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 2019-08-17
    • 2014-06-25
    • 1970-01-01
    • 2013-04-25
    • 2018-03-16
    相关资源
    最近更新 更多