【发布时间】:2018-11-29 17:35:27
【问题描述】:
我在研究python codegolf,看到有人以一种奇怪的方式使用解包运算符:
*s,='abcde'
我知道解包操作符基本上是迭代一个序列。所以我知道
s=[*'abcde']
将“解压”abcde 字符串并将['a', 'b', 'c', 'd', 'e'] 保存在变量s 中。
谁能详细解释一下
*s,='abcde'
声明工作?我知道它与s=[*'abcde'] 做同样的事情,但它以不同的方式完成它。为什么解包迭代器是变量而不是字符串?为什么变量名后面有个逗号?
【问题讨论】:
-
我对这是否与Star * operator on left vs right side of an assignment statement 重复存在冲突。无论如何,答案应该会有所帮助。
-
@miradulo 我阅读了这个问题及其答案,有些事情已经弄清楚了。尽管如此,我仍然对变量名后逗号的使用感到困惑。这是否与 s 将成为列表这一事实有关?
-
@machetazo 以便在 lhs 上使用
*- lhs 需要是逗号分隔列表或[ ]。尾随逗号创建一个仅包含一项的逗号分隔列表,相当于[*s]='abcde',但这是多了一个字符。
标签: python python-3.x operators