例1:
a = [1, 2, 3]
#当你取a[10]的时候,会显示IndexError: list index out of range
#而当你切片取值的时候
print(a[10:0]) #返回[]
例2:
a = [1, 2, 3]
print(a*3) #返回[1, 2, 3, 1, 2, 3, 1, 2, 3]
b = [[]]
b = b*3
print(b) #返回[[], [], []]
b[0].append(1)
print(b) #返回[[1], [1], [1]]
b[1].append(2)
print(b) #返回[[1, 2], [1, 2], [1, 2]]
b.append(3)
print(b) #返回[[1, 2], [1, 2], [1, 2], 3]
原因:b = b*3的输出结果直觉上很容易理解,例如 list = [ [ ] ] * 3 就是简单的创造了3个空列表。然而,理解表达式list=[ [ ] ] * 5的关键一点是它不是创造一个包含五个独立列表的列表,而是它是一个创建了包含对同一个列表五次引用的列表。只有了解了这一点,我们才能更好的理解接下来的输出结果。所以:b[0]和b[1]指向同一个list引用。