首页 > 解决方案 > 为什么我的旧列表会更改,即使两者的 ID 不同?

问题描述

我不明白为什么我的“旧”列表会发生变化,即使它们不共享相同的 ID。我一直没能找到,当我调试时,我看到旧的列表发生了变化,但找不到解决这个问题的方法。发现用切片创建一个新列表应该会改变两者的ID,但是唉,我来了。

实际使用旧列表的代码的唯一部分是当我使用时.format.(old[i]),感谢任何帮助。

menu = [
    ["egg", "bacon"],
    ["egg", "sausage", "bacon"],
    ["egg", "spam"],
    ["egg", "bacon", "spam"],
    ["egg", "bacon", "sausage", "spam"],
    ["spam", "bacon", "sausage", "spam"],
    ["spam", "sausage", "spam", "bacon", "spam", "tomato", "spam"],
    ["spam", "egg", "spam", "spam", "bacon", "spam"],
]

old = list(menu)

for i in range(len(menu))[::-1]:
    if "spam" in menu[i]:
        for k in range(len(menu[i]))[::-1]:
            if "spam" == menu[i][k]:
                del menu[i][k:k+1]

for i, meal in enumerate(menu):
    print("-"*80)
    print("{} contains, without spam:\n".format(old[i]))
    for part in meal:
        print(part)
else:
    print("-"*80)

对 Python 大师班和 Monty Python 的小声大喊……

标签: pythonnested-listsmutable

解决方案


推荐阅读