最近我看到:
a = [1]
print(a, type(a))
[b] = a
print(b)
b = a[0]
a = [1,2]
b = a[0]
print(b)
try :
[b] = a
except Exception as e:
print(e)
符号
[b] = a
实际上可以工作。
我是 Python 和一般编程的新手,以前从未发现过这一点。
我的好奇心是它为什么起作用,它是否与我无法想象的更复杂的情况相关,因为我的基础知识水平,它是否有效反对应该有一种 - 最好只有一种 - 明显的方法来做到这一点.,两便士给你。
这是一般解包语法的一种奇怪的情况,用于诸如交换两个变量而没有临时变量的上下文中:
a, b = b, a
外括号通常是可选的,但是当它解压单个值时,您需要括号或单独的尾随逗号,这很容易被错过:
b, = a
它与简单的索引不同,因为它验证是否存在“恰好”一个元素,不多也不少,如果违反该假设,则会引发异常;简单索引只会通知您序列是否太短,而不是太长。
[b] = a
没有按照你的想法去做。
这将从a
中解压所有项目并将它们分配给括号之间的变量。
由于a
中有多个值,因此失败。
有效的示例:x = [1, 2, 3]
[a, b, c] = x
print(a)
# 1
print(c)
# 3
请注意,您也可以使用
a, b, c = x
部分展开:
a = [1, 2, 3]
b, *_ = a
print(b)
# 1