在for循环中解包元组

2024-04-25 01:03:56 发布

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

我无意中发现了以下代码:

for i,a in enumerate(attributes):
   labels.append(Label(root, text = a, justify = LEFT).grid(sticky = W))
   e = Entry(root)
   e.grid(column=1, row=i)
   entries.append(e)
   entries[i].insert(INSERT,"text to insert")

我不明白“我,有点”和搜索谷歌的信息“为”是一个痛苦的流浪汉,当我试图与代码经验,我得到的错误:

ValueError: need more than 1 value to unpack

有没有人知道它做了什么或与之相关的东西,我可以谷歌了解更多?


Tags: to代码textinforlabelsrootlabel
3条回答

你可以在谷歌上搜索“元组解包”。这可以在Python中的不同地方使用。最简单的是分配

>>> x = (1,2)
>>> a, b = x
>>> a
1
>>> b
2

在for循环中,它的工作原理类似。如果iterable的每个元素都是元组,那么可以指定两个变量,循环中的每个元素都将被解包到这两个变量中。

>>> x = [(1,2), (3,4), (5,6)]
>>> for item in x:
...     print "A tuple", item
A tuple (1, 2)
A tuple (3, 4)
A tuple (5, 6)
>>> for a, b in x:
...     print "First", a, "then", b
First 1 then 2
First 3 then 4
First 5 then 6

枚举函数创建一个元组的iterable,因此可以这样使用它。

枚举基本上为您提供了一个在for循环中使用的索引。所以:

for i,a in enumerate([4, 5, 6, 7]):
    print i, ": ", a

将打印:

0: 4
1: 5
2: 6
3: 7

以这段代码为例:

elements = ['a', 'b', 'c', 'd', 'e']
index = 0

for element in elements:
  print element, index
  index += 1

循环遍历列表并存储索引变量。enumerate()做了同样的事情,但更简洁:

elements = ['a', 'b', 'c', 'd', 'e']

for index, element in enumerate(elements):
  print element, index

之所以需要index, element符号,是因为enumerate返回一个元组((1, 'a')(2, 'b'),…),它被解压成两个不同的变量。

相关问题 更多 >