这是一个非常简单的程序:
a = [[]]*3
print str(a)
a[0].append(1)
a[1].append(2)
a[2].append(3)
print str(a[0])
print str(a[1])
print str(a[2])
这是我期望的输出:
[[], [], []]
[1]
[2]
[3]
但是我得到了这个:
[[], [], []]
[1, 2, 3]
[1, 2, 3]
[1, 2, 3]
真的有我不来的东西!
你必须做
a = [[] for i in xrange(3)]
不
a = [[]]*3
现在可以正常工作:
$ cat /tmp/3.py
a = [[] for i in xrange(3)]
print str(a)
a[0].append(1)
a[1].append(2)
a[2].append(3)
print str(a[0])
print str(a[1])
print str(a[2])
$ python /tmp/3.py
[[], [], []]
[1]
[2]
[3]
当您执行类似操作时,a = [[]]*3
您会在一个列表中[]
三次获得相同的列表。 相同的
意思是,当您更改其中之一时,您也会更改所有它们(因为只有一个列表被引用了3次)。
您需要创建三个独立的列表来解决此问题。您可以通过列表理解来做到这一点。您在此处构造一个由独立的空列表组成的列表[]
。将为每次迭代创建一个新的空列表xrange(3)
(在这种情况下,range
和之间的区别xrange
并不那么重要;但是xrange
要好一些,因为它不会产生完整的数字列表,而只是返回一个迭代器对象)。
问题内容: 我正在尝试使用PHP将新列添加到我的MYSQL表中。我不确定如何更改表以创建新列。在我的评估表中,我有: 假设我有一个带有文本框的页面,然后输入文本框并按一个按钮,则表将更新为: 我的代码: 问题答案: 您的桌子: 你也可以
主要内容:Python append()方法添加元素,Python extend()方法添加元素,Python insert()方法插入元素实际开发中,经常需要对 Python 列表进行更新,包括向列表中添加元素、修改表中元素以及删除元素。本节先来学习如何向列表中添加元素。 《 Python序列》一节告诉我们,使用 运算符可以将多个序列连接起来;列表是序列的一种,所以也可以使用 进行连接,这样就相当于在第一个列表的末尾添加了另一个列表。 请看下面的演示: 运行结果: language = ['P
我有一个熊猫数据框,其中一列由列表组成: 我想添加,例如,每个列表的第一个和最后一个索引。为此,我使用: 这分别作用于每一行,如果数据帧很大,这可能会非常密集。有没有办法将此操作矢量化?
我正在尝试在现有列表中添加一个新项目,但无法添加。当我调试时,它显示返回为true,但最终新项没有添加到列表中。 我的示例代码如下:雇员雇员1=新雇员(5001,BOB,financeDept.getDepartment_name());雇员雇员2=新雇员(5002,SAM,financeDept.getDepartment_name());雇员雇员3=新雇员(5003,SAM,hrDept.ge
问题内容: 在python中将列表列表加入单个列表(或迭代器)的语法是否简短? 例如,我有一个如下列表,我想遍历a,b和c。 我能想到的最好的方法如下。 问题答案:
问题内容: 我现在有了: 我希望有: 只是两个列表的元素加法。 我当然可以迭代两个列表,但是我不想这样做。 什么是最Python的方式这样做的? 问题答案: 使用map有: 或zip具有列表理解: 时序比较: