迭代元组中的元素(Python)

use*_*067 1 python for-loop tuples

我是编程新手,出于实践原因,我尝试迭代元组中的元素,然后为每个不同的元素提供一个索引。

我在迭代元组时遇到问题,这是我的代码:

ps:我使用enumerate是为了为每个元组保留一个索引。

myList = [(5, 7, 24), (0, 6, 10), (0, 3, 24), (1, 3, 100), (7, 10, 15)]
for tup in myList:
    for x, y, z in enumerate (tup):
        print(x, y, z)
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-72-cfb75f94c0bb> in <module>
     17 myList = [(5, 7, 24), (0, 6, 10), (0, 3, 24), (1, 3, 100), (7, 10, 15)]
     18 for tup in myList:
---> 19     for x, y, z in enumerate (tup):
     20         print(x, y, z)

ValueError: not enough values to unpack (expected 3, got 2)
Run Code Online (Sandbox Code Playgroud)

我给了 3 个要解包的元素,但无论如何我都得到了那个错误。哪个是解包 3 个元素的元组的正确方法?

Cod*_*ice 5

我给了 3 个要解包的元素,但无论如何我都得到了那个错误。哪个是解包 3 个元素的元组的正确方法?

问题是for循环基本上已经为你解包了元组。例如:

myList = [(5, 7, 24), (0, 6, 10), (0, 3, 24), (1, 3, 100), (7, 10, 15)]
for tup in myList:
    for x in tup:
        print(x)
Run Code Online (Sandbox Code Playgroud)

enumerate()正确使用,您需要解包从中返回的两个元素:

myList = [(5, 7, 24), (0, 6, 10), (0, 3, 24), (1, 3, 100), (7, 10, 15)]
for tup in myList:
    for i, x in enumerate(tup):
        print(i, x)
Run Code Online (Sandbox Code Playgroud)

相反,如果您想要父列表中每个元组的索引,则需要enumarate(myList)在外部循环中:

for i, (x, y, z) in enumerate(myList):
    print(i, x, y, z)
Run Code Online (Sandbox Code Playgroud)