迭代时更新列表列表(Updating list of lists at iteration)

编程入门 行业动态 更新时间:2024-10-12 03:23:17
迭代时更新列表列表(Updating list of lists at iteration)

我有一个列表列表,我想在迭代时更新每个列表。 我按如下方式初始化了我的列表:

my_list = [[0]*n]*n

当我想更新内部列表时,通过以下方式:

for i in range(something): for j in range(anotherthing): my_list[i][j] = something

所发生的是整个列表仅在每次迭代时更新而不是第i个列表,例如[[1,2],[1,2]]。 我想要的是在我初始化它的第一次迭代时[[1,2],[0,0]],并且成为[[1,2],[values]]。 我究竟做错了什么?

I've a list of lists and I want to update each list at iteration. I initialized my list as follows:

my_list = [[0]*n]*n

When I want to update the inner lists, by something like:

for i in range(something): for j in range(anotherthing): my_list[i][j] = something

What happens is that the whole list is updated rather than the ith list only at each iteration, e.g. [[1,2], [1,2]]. What I want is at the first iteration to be [[1,2], [0,0]] as I initialized it, and in to be [[1,2], [values]]. What am I doing wrong?

最满意答案

列表乘法运算符*不会创建副本,但会创建对同一数据的多个引用。 而不是使用*考虑使用理解来初始化您的列表:

my_list = [[0 for i in range(n)] for j in range(n)]

The list multiplication operator * does not create copies, but creates multiple references to the same data. Instead of using * consider using comprehensions for initializing your list:

my_list = [[0 for i in range(n)] for j in range(n)]

更多推荐

本文发布于:2023-07-17 13:05:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1144905.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:列表   迭代   Updating   iteration   lists

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!