python - 为什么这个 python 代码不替换已删除的列表元素?

标签 python list

这是我的代码:

for each in range(0, number_of_trials):
  temp_list = source_list
  for i in range(10):
    x = random.randrange(0, len(temp_list))
    board[i] = temp_list[x]
    del temp_list[x]

正如预期的那样,此代码正在从 temp_list 中删除每个元素。但是 temp_list 并没有在每次初始 for 循环运行时都被重置,而是将其设置回 source_list。因此,每次从 temp_list 中删除都是永久性的,持续 for 循环的每次后续迭代。我怎样才能避免这种情况并让 temp_list 每次都“重置”回其初始状态?

最佳答案

temp_list = source_list 语句不会创建新列表。它为现有列表赋予新名称 temp_list。使用什么名称访问列表并不重要——通过一个名称所做的任何更改都将通过另一个名称可见。

相反,您需要像这样复制列表:

temp_list = source_list[:]

这将创建一个新列表,其内容与 source_list 相同。现在您可以在不影响原始列表的情况下更改新列表。

关于python - 为什么这个 python 代码不替换已删除的列表元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9629197/

相关文章:

Python - 如何删除列表列表中的最后一个元素?

Python:使用嵌套循环进行列表推导

python xml 解析 (minidom)

python - 使用 time.mktime 的日期/时间转换似乎是错误的

Python - 如何删除列表列表中的重复元组?

python - Python 有一个不可变的列表吗?

python比较2个不同长度列表中的项目-顺序很重要

python - read_mrz 错误 : Could not find a format to read the specified file in mode 'i'

python - 求 pow(x,n) 的二等分递归解

Python后台shell脚本通信