作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一个从 C 转过来的 Python 新手。我基本上是在尝试实现与 C 中的数组指针数组等效的逻辑。
我想通过迭代这些列表的列表来将一个项目附加到一堆列表的末尾。我有以下代码:
data = [10, 20, 30]
list1 = list2 = list3 = list()
lists = [list1, list2, list3]
for i in range(len(data)):
lists[i].append(data[i])
for lst in lists:
print lst
然而,结果是:
[10, 20, 30]
[10, 20, 30]
[10, 20, 30]
代替:
[10]
[20]
[30]
我无法解释为什么这段代码无法产生所需的输出,是否有其他方法可以做到这一点?
最佳答案
你只创建一个列表
list1 = list2 = list3 = list()
此行创建一个空列表,将其引用分配给 list3
,将 reference 分配给 list3
分配给 list2
和 list1
,因此它们指的是同一个对象。因此,当您添加您的值时,您会将它们添加到您所有的“列表”中。
这会很好用
data = [10, 20, 30]
lists = [[], [], []]
for i in range(len(data)):
lists[i].append(data[i])
for lst in lists:
print lst
但最简单的方法是只做
data = [10, 20, 30]
lists = [ [x] for x in data ]
关于Python:通过遍历列表列表将项目附加到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18929746/
我是一名优秀的程序员,十分优秀!