Python 为什么这段代码在某些情况下会引发Indexer错误?
我的功能是这样的: 输入:Python 为什么这段代码在某些情况下会引发Indexer错误?,python,list,python-3.x,indexing,Python,List,Python 3.x,Indexing,我的功能是这样的: 输入: 8 输出: ['000', '001', '010', '011', '100', '101', '110', '111'] 这就是创建一个列表来存储从0开始的输入二进制数。 这是我的代码(正确版本): 这段代码运行良好。但如果我更改了一行代码: list_Bin = [None] * input_num 到 它将提高索引器 我真的很想知道为什么,因为我已经多次遇到这个问题。空列表就像0;不管你把它乘以什么,答案仍然是一个空列表 >>> []
8
输出:
['000', '001', '010', '011', '100', '101', '110', '111']
这就是创建一个列表来存储从0开始的输入二进制数。
这是我的代码(正确版本):
这段代码运行良好。但如果我更改了一行代码:
list_Bin = [None] * input_num
到
它将提高索引器
我真的很想知道为什么,因为我已经多次遇到这个问题。空列表就像0;不管你把它乘以什么,答案仍然是一个空列表
>>> [] == []*8
True
而
[][x]
将为任何值x
生成一个索引器,[None]
和[]
之间存在差异[None]
是一个包含一个成员的列表,该成员为None
。但是[]
是一个成员为零的空列表
当您执行[None]*input_num
操作时,您将创建一个包含None
成员的新列表,其次数为input_num
次
但是当您执行[]*input_num
操作时,没有成员可以开始。因此,您仍然有一个空列表,自然无法编制索引。Wow!我得到了它!这太清楚了!所以,如果我想给空列表值,唯一的方法是.append?非常感谢您的回答;)是的,空列表与其他列表一样;它只是没有任何值。你可以用len来计算它的长度(和其他任何列表一样,一个有效的索引i
是0谢谢你的帮助!但是我可以用.append来给空列表赋值吗?@MarsLee很高兴见到你。;)是的,空列表是一个列表,因此你可以像其他列表一样,用一个项目来附加它!谢谢你昨天帮助我!我完全明白了!谢谢:)@MarsLee好极了是的,正如你所说,我们很快又见面了。。。祝您今天过得愉快!我相信我们很快就会再见面,因为我还有很多问题哈哈。希望你有一个美好的一天:)
list_Bin = [] * input_num
>>> [] == []*8
True