我正在学习Python。我使用谷歌进行的研究没有对这里发生的事情进行任何描述。我正在做一些基本练习。
codewars 网站上的一个人把这个解决方案归咎于一个问题:
data=[[18, 20], [45, 2], [61, 12], [37, 6], [21, 21], [78, 9]]
def openOrSenior(data):
return ["Senior" if age >= 55 and handicap >= 8 else "Open" for (age, handicap) in data]
我无法理解他们如何使用元组来访问子列表元素。这在 Python 中叫什么?它是如何工作的?
for (age, handicap) in data
这不是一个元组,这只是序列解包。
(x, y) = [1, 2]
例如,这是完全合法的,因为左侧仅意味着“将第一个元素分配给x
,将第二个元素分配给y
”。它不是一个类型与正在解包的对象类型匹配的元组。这就是所谓的“元组拆包”。简单来说,这是一种从列表中提取项目并将变量分配给这些值的简洁方式。
在这种特定情况下,
for (age, handicap)
in data 正在迭代数据列表,并且对于 data 中的每个子列表,它提取第一个元素 asage
和第二个元素 ashandicap
。假设每个子列表包含两个元素,并将它们分别解压到变量age
和中handicap
。因此,例如,
data=[[18, 20], [45, 2], [61, 12]]
在迭代过程中,第一次迭代将分配age = 18
和handicap = 20
,第二次迭代将分配age = 45
和handicap = 2
,依此类推,直到耗尽 data 中的子列表。在我看来,元组解包是处理序列迭代的一种非常强大且有效的方法。
这不是元组,它只是解压子列表,如果您不带括号使用它仍然会像下面一样工作