元组的新值不会在foreach循环之外保存

时间:2014-05-24 08:57:37

标签: python foreach tuples

for row in tuple:
    print row[6] # Error: tuple index out of range
    storyLen = len(row[5])
    row = row + (storyLen, )
    print row[6] # No Error as it's added
    # Leave loop now

for newRow in tuple:
    print newRow[6] # Error: tuple index out of range

为什么上述情况发生?不应该在两个循环之间保存这个值,无论如何要修复它?如果重要,元组是一个类属性。

1 个答案:

答案 0 :(得分:1)

row是元组实际元素的“副本”。因此,您所做的任何更改都不会影响原始元组。 (您可以通过打印id来测试)

你能做什么?

你可以循环索引:

for i in range(len(tuple)):
    storyLen = len(tuple[i][5])
    tuple[i] += (storyLen,)

这样做是因为你直接访问元组的元素。

注意:不要使用tuple作为变量的名称,因为它会隐藏Python tuple类型的内置实现。