这条python线是什么意思?

时间:2010-04-08 06:50:14

标签: python syntax

abc = [0, ] * datalen;

datalen”是Integer

然后我看到这样的引用:

abc[-1]

有什么想法吗?

5 个答案:

答案 0 :(得分:8)

创建一个包含datalen对象0的引用的列表:

>>> datalen = 10
>>> print [0,] * datalen
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

你真的不需要逗号:

>>> print [0] * datalen
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

答案 1 :(得分:5)

正如其他人所说的那样,[0] * n会给你一个n个零的列表,带有负数的索引用[-k]给出最后的第k个元素,如:


a[-1]

给出序列的最后一个元素和


a[-3]

给出序列的第三个最后一个元素。

答案 2 :(得分:3)

除了已经说过的内容之外,请记住在复制可变对象时会出现这种情况。新python程序员的经典陷阱

>>> bc = [0,] * 5
>>> bc
[0, 0, 0, 0, 0]
>>> bc[2]=4
>>> bc
[0, 0, 4, 0, 0]


>>> bb = [{}, ]*5
>>> bb
[{}, {}, {}, {}, {}]
>>> bb[2]["hello"]="hi"
>>> bb
[{'hello': 'hi'}, {'hello': 'hi'}, {'hello': 'hi'}, {'hello': 'hi'}, {'hello': 'hi'}]
>>> 

答案 3 :(得分:1)

在此上下文中使用时,*是“序列重复”运算符。

>>> datalen = 3
>>> abc = [0,] * datalen
[0, 0, 0]

在这种情况下,看起来它被用作创建具有datalen元素的数组的方法,所有这些元素都被初始化为零。

这也适用于字符串(因为它们也是序列):

>>> 'String' * 3
'StringStringString'

答案 4 :(得分:0)

创建一个datalen数为零的列表

>>> datalen=5
>>> abc = [0, ] * datalen
>>> abc
[0, 0, 0, 0, 0]