【发布时间】:2011-03-29 01:28:20
【问题描述】:
全部,
代码:
#=A===================
>>> b = [[1]*3]*3
>>> b
[[1, 1, 1], [1, 1, 1], [1, 1, 1]]
>>> b[0][0] = 0
>>> b
[[0, 1, 1], [0, 1, 1], [0, 1, 1]]
>>>
#=B===================
>>> b = [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
>>> b[0][0] = 0
>>> b
[[0, 1, 1], [1, 1, 1], [1, 1, 1]]
我可以使用类似于 "b = [[1]*3]*3" 的格式来获得与 "b = [[1 , 1, 1], [1, 1, 1], [1, 1, 1]]" 减少输入?
as "b = [[1]*3]*3" 可能会返回一个基于“参考”的列表,它对日常工作有用吗?有样品吗?
谢谢! KC
【问题讨论】:
-
我不想听起来很刺耳,但你的问题让我头疼 :D 你能改一下吗?
-
这两个表达式做不同的事情。显然,您不能使用
b = [[1]*3]*3作为您的示例所证明的。既然你已经给出了一个很好的证据证明它不会起作用,那么你的问题是什么? -
@S.Lott,这个问题来自网络上的阅读帖子,当我阅读代码“b = [[1]*3]*3”时,我认为这个表达式足够清晰直接减少输入,但我确信它无法工作,是的,我理解它是一个“参考”列表,所以我认为是否可以对其进行改进并与“b = [[1, 1, 1 ], [1, 1, 1], [1, 1, 1]]" 以减少输入,并且由于 "b = [[1]*3]*3" 可能导致基于 "reference" 的列表,是对日常工作有用吗?
-
@user478514:你的例子证明
b = [[1]*3]*3不能和b = [[1, 1, 1], [1, 1, 1], [1, 1, 1]]一样工作。既然你已经创造了绝对的证据,证明两者永远不可能相同,你还想要什么? -
@S.Lott,正如我所说,“b = [[1]*3]*3” 看起来比“b = [[1, 1, 1], [1 , 1, 1], [1, 1, 1]]",所以我需要的是一个表达式,下面的朋友给出了答案“b = [[1]*3 for _ in range(3)]”,此外,由于 "b = [[1]*3]*3" 也是一个语法有效的表达式,那么我想它可能会以某种方式有用......
标签: python variables evaluation