ash*_*ash 0 python list python-3.x
以下如何工作?
>>> 3*[2]
>>> [2,2,2]
>>> [2]*3
>>> [2,2,2]
Run Code Online (Sandbox Code Playgroud)
我明白这*
是位置扩展运算符.既然[2]
是一个包含单个项目的列表,我看不出如何3*[2]
扩展到任何有意义的东西,我期待一个SyntaxError
,但事实并非如此.
我很难找到现有的答案,我找到的只是引用*args
和**kwargs
传递可变参数列表,这些都没有完全回答我的问题.
Mar*_*ers 12
*
是乘法运算符.所有Python序列都支持乘法.请参阅序列类型文档:
s * n
,n * s
ñ的浅拷贝小号级联
请注意,副本很浅 ; 任何嵌套的可变类型也不会以递归方式复制.这可能会导致令人惊讶的结果:
>>> nested = [[None]] * 5
>>> nested
[[None], [None], [None], [None], [None]]
>>> nested[0].append(42)
>>> nested
[[None, 42], [None, 42], [None, 42], [None, 42], [None, 42]]
Run Code Online (Sandbox Code Playgroud)
只有一个嵌套[None]
列表,引用了5次,而不是5个单独的列表对象.
的*args
和**kw
可变参数的语法仅在函数定义或在呼叫(以便有意义callable_object(<arguments>)
).它根本不适用于此.请参阅**(双星)和*(星)对参数做什么?有关该语法的更多详细信息.
序列类型*
通过object.__mul__()
和object.__rmul__()
方法(在表达式中作为左或右操作数)重载操作符,请参阅模拟容器类型以获取有关哪些挂钩序列类型通常实现的文档.
归档时间: |
|
查看次数: |
3055 次 |
最近记录: |