gpt4 book ai didi

Python 解包运算符 (*)

转载 作者:太空宇宙 更新时间:2023-11-03 13:08:19 29 4
gpt4 key购买 nike

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

*s,='abcde'

我知道解包运算符基本上是遍历一个序列。所以我知道

s=[*'abcde']

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

谁能尽可能彻底地解释一下

*s,='abcde'

声明工作?我知道它与 s=[*'abcde'] 做同样的事情,但它以不同的方式完成它。为什么解包迭代器在变量上,而不是字符串上?为什么变量名后面要加一个逗号?

最佳答案

这是 Iterable Unpacking .您可能在其他地方看到过从单个表达式为多个变量赋值

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

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

a, *b, c = [1, 2, 3, 4, 5]
print(b)
# [2, 3, 4]

那么,您的示例中发生了什么?只有一个变量名被分配给了,所以它将把所有没有分配给另一个变量的项目都拿走,在这个例子中就是所有的变量。如果你尝试一下

*s='abcde'

你会得到

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

这就是逗号在那里的原因,因为尾随逗号是您指示单值元组的方式。

关于Python 解包运算符 (*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50950690/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com