首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python中的x= [m]*n语法是什么?

Python中的x= [m]*n语法是什么?
EN

Stack Overflow用户
提问于 2016-05-15 05:28:14
回答 2查看 4.4K关注 0票数 10

我偶然发现了'x = m*n‘并在解释器中运行它,我可以看到代码分配了一个用m初始化的n元素数组,但是我无法在线找到这种类型代码的描述。这叫什么?

代码语言:javascript
运行
复制
>>> x = [0]*7
>>> x
[0, 0, 0, 0, 0, 0, 0]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-15 05:35:19

Python文档的描述中,整数n和基元序列类型之间使用的乘法运算符*在序列n时间中执行项的序列重复。所以我想你要找的术语是序列重复。注意,这不是“序列复制”,因为没有创建项目的副本--您有对同一序列的n引用。

票数 14
EN

Stack Overflow用户

发布于 2016-05-15 05:32:17

*只是一种乘法--因为列表的+是一种直观的东西,意味着将两个操作数连在一起,下一步是用标量乘法-- [0] * N的意思是“用自己N次连接这个列表”!

换句话说:*是在Python中为其原始序列类型定义的一个运算符,是一个整数,用于将序列与其本身连在一起。它将处理列表、元组甚至字符串。

在Python中,这在某种程度上是很自然的,因为语言允许操作符重载,因此Python程序员确实期望操作符对对象执行有意义的操作。

应该注意的是,组成结果列表的对象不是原始列表上的对象的副本,而是对同一个对象的引用。因此,如果原始列表的内容只是数字或其他不可变的对象,就不会有什么意外--但是如果它包含可变对象,比如内部列表,那么在更改它们时可能会产生严重的副作用--就像下面的片段中所示:

代码语言:javascript
运行
复制
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]]
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37234887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档