Skip to main content
 首页 » 编程设计

python之为什么 Python 列表乘法创建一个包含多个元素的列表

2025年05月04日15Renyi-Fan

在 python 中,['a'] * 4 给出 ['a', 'a', 'a', 'a']。为什么不是 [['a'], ['a'], ['a'], ['a']]?

请您参考如下方法:

因为,正如整数乘法是重复加法一样,lis 的乘法是重复串联。

>>> ['a'] + ['a'] + ['a'] + ['a'] 
['a', 'a', 'a', 'a'] 
>>> ['a'] * 4 
['a', 'a', 'a', 'a'] 
>>> 4 * ['a'] 
['a', 'a', 'a', 'a'] 

这也遵守其他各种法律:

  • 分布:lst * n + lst * m == lst * (n + m)
  • 零属性:lst * 0 == 0 * lst == []
  • 多重恒等式:lst * 1 == lst。

以上也符合空列表[]是加法恒等式,

['a'] + [] == [] + ['a'] == ['a'] 

自从

['a'] + [] == ['a'] * 1 + ['a'] * 0  # zero property and multiplicative identity 
           == ['a'] * (1 + 0)        # distribution 
           == ['a'] * 1              # integer addition 
           == ['a']                  # multiplicative identity 

可以说,list * int 不应全部 定义。主要用例是快速生成 n 相同元素的列表,使用列表理解(后来添加到语言中)更安全。 [x] * n 创建对单个元素 x 的引用列表,如果 x<,这通常不是您想要的 是可变的。另一方面,[x for _ in range(n)] 创建一个由 x 定义的独立对象列表,是什么当 x 可变时,您需要。