帮我理解python

时间:2010-07-13 06:01:33

标签: python

初始化数组数组:

M = [[]]*(24*60/5)

将数字2附加到M

中的第51个数组
M[50].append(2)

M中有什么?

...
[2]
[2]
[2]
[2]
[2]
[2]
[2]
[2]
...

M中的每个元素都是数组[2]

我错过了什么?我怀疑我最初初始化的每个[]都是对内存中相同空间的引用。

3 个答案:

答案 0 :(得分:5)

做了创建一个数组数组。但是,您随后为其每个条目分配了相同的[]

并非每次调用[]时它都会为您提供相同的数组 - 这就是您只调用[]一次。

得到它?

答案 1 :(得分:4)

是的,你得到了它,正如Borealid指出的那样。

如果你想多次使用不同的列表,你可以这样做:

M = [[] for _ in range(24*60/5)]

_只是一个常规变量名(变量可以以下划线开头),但它告诉读者代码“我是一个不重要的变量,没有特殊含义”。

答案 2 :(得分:0)

看看http://www.python.org/dev/peps/pep-0020/

您喜欢使用的构造非常难以阅读并且“可读性很重要”。