Python解包运算符(*)

2024-05-14 13:02:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我在研究python codegolf时看到有人用一种奇怪的方式使用解包运算符:

*s,='abcde'

我知道解包操作符基本上在一个序列上迭代。所以我知道

^{pr2}$

将“解包”字符串abcde并将['a', 'b', 'c', 'd', 'e']保存在变量s中。在

有人能尽可能详尽地解释

*s,='abcde'

报表工作?我知道它和s=[*'abcde']是一样的,但是它以不同的方式完成它。为什么解包迭代器在变量上,而不是在字符串上?为什么变量名后面有逗号?在


Tags: 字符串报表方式运算符序列逗号abcdepr2
1条回答
网友
1楼 · 发布于 2024-05-14 13:02:07

这是Iterable Unpacking。您可能在其他地方见过从一个表达式向多个变量赋值的方法

a, b, c = [1, 2, 3]

此语法包含一个*,表示该变量应该是一个列表,其中包含iterable中未显式分配给另一个变量的元素。在

^{pr2}$

那么,你的例子是怎么回事?只有一个变量名被赋值,所以它将把所有没有赋值给另一个变量的项,在本例中是所有的项。如果你试着

*s='abcde'

你会得到

SyntaxError: starred assignment target must be in a list or tuple

这就是为什么会有逗号,因为后面的逗号是用来表示单个值元组的。在

相关问题 更多 >

    热门问题