2024-04-18 18:10:15 发布
网友
因为某种原因
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]]
虽然他们打印的是一样的,但是他们的工作方式不一样。。。 有人能澄清一下这些名单之间是否有区别,是哪一个?你知道吗
在第一个示例中,您将相同的子列表四次附加到list(这是一个不幸的名称,因为它还隐藏了内置名称,但这与这里的问题无关)。因此,如果修改其中一个子列表,则修改所有子列表。你知道吗
list
在第二个示例中,您创建了一个包含四个子列表的列表。你知道吗
无论如何,这段代码看起来更像是一个C程序,而不是一个Python脚本—您应该阅读Python tutorial以开始学习语言的本意。你知道吗
创建a*b大小的“矩阵”的正确方法是:
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,它们的工作原理是相同的
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]] >>>
在第一个示例中,您将相同的子列表四次附加到
list
(这是一个不幸的名称,因为它还隐藏了内置名称,但这与这里的问题无关)。因此,如果修改其中一个子列表,则修改所有子列表。你知道吗在第二个示例中,您创建了一个包含四个子列表的列表。你知道吗
无论如何,这段代码看起来更像是一个C程序,而不是一个Python脚本—您应该阅读Python tutorial以开始学习语言的本意。你知道吗
创建
a
*b
大小的“矩阵”的正确方法是:如果您只需打印每个子列表的
id
,它们的工作原理是相同的你知道吗输出:-你知道吗
相关问题 更多 >
编程相关推荐