生成包含每个子列表中的子列表和B元素的列表

时间:2014-11-09 13:01:18

标签: python

出于某种原因

a=4
b=3

sublists=[]
p=0
while p<b:
    sublists.append(0)
    p+=1
list=[]
p=0
while p<a:
    list.append(sublists)
    p+=1

与:

不同
list=[[0,0,0], [0,0,0], [0,0,0], [0,0,0]]
虽然他们打印相同,但他们不会以同样的方式工作...... 有人可以澄清列表之间是否存在差异,这是什么?

2 个答案:

答案 0 :(得分:4)

在第一个示例中,您将相同的子列表四次附加到list(这是一个不幸的名称,因为它也会影响内置名称,但是& #39;与这里的问题无关)。因此,如果您修改其中一个子列表,则修改所有这些子列表。

在第二个示例中,您创建了一个包含四个相同但不同的子列表的列表。

无论如何,该代码看起来更像是C程序而不是Python脚本 - 您应该阅读Python tutorial以开始学习该语言,因为它意味着要使用。

创建a * b大小&#34;矩阵的正确方法&#34;预定义为0的条目为:

>>> a = 4
>>> b = 3
>>> matrix = [[0] * b for _ in range(a)]
>>> matrix
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

答案 1 :(得分:0)

如果您简单地打印每个子列表的id

,它们的工作方式相同
print map(id, list) #will print the id of all sublist
sublists[1] = 2
print sublists, list, 

输出: -

[0, 0, 0]
[3053888556L, 3053888556L, 3053888556L, 3053888556L]
[0, 2, 0] [[0, 2, 0], [0, 2, 0], [0, 2, 0], [0, 2, 0]]
>>>