for循环中的列表条目不变

时间:2016-07-17 13:00:51

标签: python python-3.x

我知道它通常不建议迭代更改列表,但为什么这不起作用?我想让boxes改变

boxes = [["A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3"], ["A4", "A5", "A6", "B4", "B5", "B6", "C4", "C5", "C6"],
     ["A7", "A8", "A9", "B7", "B8", "B9", "C7", "C8", "C9"], ["D1", "D2", "D3", "E1", "E2", "E3", "F1", "F2", "F3"],
     ["D4", "D5", "D6", "E4", "E5", "E6", "F4", "F5", "F6"], ["D7", "D8", "D9", "E7", "E8", "E9", "F7", "F8", "F9"],
     ["G1", "G2", "G3", "H1", "H2", "H3", "I1", "I2", "I3"], ["G4", "G5", "G6", "H4", "H5", "H6", "I4", "I5", "I6"],
     ["G7", "G8", "G9", "H7", "H8", "H9", "I7", "I8", "I9"]]
{'I8': 3, 'I9': 8, 'D8': 1, 'B8': 9, 'G6': 6, 'I2': 2, 'I3': 6, 'I4': 5, 'I5': 4, 'I6': 9, 'G7': 2, 'E4': 6, 'E5': 3, 'E6': 4, 'E7': 8, 'E1': 9, 'E2': 1, 'E3': 5, 'G2': 5, 'G3': 1, 'G1': 3, 'E8': 2, 'E9': 7, 'G4': 8, 'G5': 7, 'C6': 1, 'C7': 3, 'A2': 3, 'C5': 6, 'A4': 7, 'C3': 9, 'A6': 5, 'C1': 2, 'A8': 8, 'A1': 1, 'D3': 3, 'C8': 7, 'C9': 5, 'H7': 7, 'H6': 3, 'C4': 4, 'H4': 1, 'H3': 8, 'H2': 9, 'H1': 4, 'D2': 7, 'C2': 8, 'A7': 6, 'G8': 4, 'H9': 6, 'H8': 5, 'B1': 5, 'G9': 9, 'A9': 2, 'I1': 7, 'I7': 1, 'F9': 3, 'F8': 6, 'D1': 6, 'D7': 9, 'D6': 8, 'D5': 5, 'D4': 2, 'F1': 8, 'F3': 2, 'F2': 4, 'F5': 1, 'F4': 9, 'F7': 5, 'F6': 7, 'B5': 8, 'B4': 3, 'B7': 4, 'B6': 2, 'H5': 2, 'A3': 4, 'B3': 7, 'B2': 6, 'A5': 9, 'B9': 1, 'D9': 4}
def display():
    for array in boxes:
        for positions in array:
            positions = user_dic[positions]
            print(positions)
        print(array)
    print(boxes)
    print(user_dic) 

显示器()

1 个答案:

答案 0 :(得分:1)

每次迭代中的

positions只是一个字符串。在这一点上,它没有容器的概念。因为字符串是不可变的,所以你不能就地改变它。

l = ["A1"]
for e in l:
    print(e, type(e))  # A1 <class 'str'>

要更改容器,您需要引用容器本身。

l = ["A1"]
for idx, e in enumerate(l):
    print(idx, type(idx), e, type(e))  # 0 <class 'int'> A1 <class 'str'>
    l[idx] = "something"
print(l)  # ["something"]