abc = [0, ] * datalen;
“datalen
”是Integer
。
然后我看到这样的引用:
abc[-1]
有什么想法吗?
答案 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]