生成一个包含a个子列表和B元素的列表

2024-04-18 18:10:15 发布

您现在位置: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]]

虽然他们打印的是一样的,但是他们的工作方式不一样。。。 有人能澄清一下这些名单之间是否有区别,是哪一个?你知道吗


Tags: 方式list名单append区别whilesublists
2条回答

在第一个示例中,您将相同的子列表四次附加到list(这是一个不幸的名称,因为它还隐藏了内置名称,但这与这里的问题无关)。因此,如果修改其中一个子列表,则修改所有子列表。你知道吗

在第二个示例中,您创建了一个包含四个子列表的列表。你知道吗

无论如何,这段代码看起来更像是一个C程序,而不是一个Python脚本—您应该阅读Python tutorial以开始学习语言的本意。你知道吗

创建a*b大小的“矩阵”的正确方法是:

>>> a = 4
>>> b = 3
>>> matrix = [[0] * b for _ in range(a)]
>>> matrix
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 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]]
>>> 

相关问题 更多 >