我偶然发现了'x = m*n‘并在解释器中运行它,我可以看到代码分配了一个用m初始化的n元素数组,但是我无法在线找到这种类型代码的描述。这叫什么?
>>> x = [0]*7
>>> x
[0, 0, 0, 0, 0, 0, 0]发布于 2016-05-15 05:35:19
在Python文档的描述中,整数n和基元序列类型之间使用的乘法运算符*在序列n时间中执行项的序列重复。所以我想你要找的术语是序列重复。注意,这不是“序列复制”,因为没有创建项目的副本--您有对同一序列的n引用。
发布于 2016-05-15 05:32:17
*只是一种乘法--因为列表的+是一种直观的东西,意味着将两个操作数连在一起,下一步是用标量乘法-- [0] * N的意思是“用自己N次连接这个列表”!
换句话说:*是在Python中为其原始序列类型定义的一个运算符,是一个整数,用于将序列与其本身连在一起。它将处理列表、元组甚至字符串。
在Python中,这在某种程度上是很自然的,因为语言允许操作符重载,因此Python程序员确实期望操作符对对象执行有意义的操作。
应该注意的是,组成结果列表的对象不是原始列表上的对象的副本,而是对同一个对象的引用。因此,如果原始列表的内容只是数字或其他不可变的对象,就不会有什么意外--但是如果它包含可变对象,比如内部列表,那么在更改它们时可能会产生严重的副作用--就像下面的片段中所示:
In [167]: a = [[0]] * 7
In [168]: a
Out[168]: [[0], [0], [0], [0], [0], [0], [0]]
In [169]: a[0].append(1)
In [170]: a
Out[170]: [[0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1]]https://stackoverflow.com/questions/37234887
复制相似问题