为什么这段代码在某些情况下会引发IndexError?

Mar*_*Lee 3 python indexing list python-3.x

我的功能是这样的:

输入:

8
Run Code Online (Sandbox Code Playgroud)

输出:

['000', '001', '010', '011', '100', '101', '110', '111']
Run Code Online (Sandbox Code Playgroud)

所以这是创建一个列表来存储input_number从0开始的二进制数.这是我的代码(正确的版本):

import math

input_num = 8
max_bit = math.ceil(math.log(input_num, 2))

list_Bin = [None] * input_num

for i in range(input_num):
    extra_d = max_bit - len(bin(i)[2:])
    list_Bin[i] = '0'*extra_d + bin(i)[2:]

print(list_Bin)
Run Code Online (Sandbox Code Playgroud)

这段代码效果很好.但是,如果我改变一行代码:

list_Bin = [None] * input_num
Run Code Online (Sandbox Code Playgroud)

list_Bin = [] * input_num
Run Code Online (Sandbox Code Playgroud)

它会引发IndexError.

我真的很想知道为什么,因为我多次遇到过这个问题.

che*_*ner 5

空列表就像0; 无论你乘以什么,答案仍然是一个空列表.

>>> [] == []*8
True
Run Code Online (Sandbox Code Playgroud)

并且[][x]IndexError为任何价值筹集资金x.