我正在使用Python3,我想知道如果列表理解总是安全的。
例如:
mylist = ["string1", "string2", "foo", "bar"]
# I want to remove all items with "string" substring:
pattern_to_rm = "string"
mylist = [ item for item in mylist if pattern_to_rm not in item ]
# print(mylist) = ["foo", "bar"]
我是否可以通过这种方式遇到一些问题(因为我在迭代时更改输入列表大小)?我需要复制什么吗? mylist
永远不会是一个巨大的列表,但包含非常重要的数据。
任何帮助或建议都将受到高度赞赏。
答案 0 :(得分:2)
此代码在迭代时不会更改列表大小。它从过滤的项目构建新列表,然后将mylist
引用重新分配给新列表。这是安全的,你不需要复制或任何东西。