【问题标题】:Unpack error with tuple of tuples?元组元组解包错误?
【发布时间】:2014-02-23 07:05:55
【问题描述】:

我想遍历元素 ((a,b),(x,y)),所以我尝试了:

def method(tuple):
    ((a,b),(x,y))= tuple
    for element in tuple:
    .....

但后来我阅读了另一个 stackoverflow 页面,其中提出了这样的建议:

def method(tuple):
    ((a,b),(x,y))= tuple
    for element in tuple[0:4]:
    .....

两者都导致错误:ValueError: need more than 1 value to unpack.

这个动作在 python 中是不允许的,还是我只是有语法问题? 我也检查了 python 文档。

感谢您的建议。

编辑

map = ((1,0),(3,2))
    def count(map):
        ((a,b),(x,y))= tuple
        inc=0
        for element in tuple:
            inc+=1

【问题讨论】:

  • 请向我们展示您的实际代码和您使用的数据。
  • 不清楚您要做什么。解包元组后,为什么需要迭代?但是,我认为这不是您的问题。错误“ValueError:需要超过 1 个值才能解压。”表示元组没有您期望的形式。它试图打破它,但失败了。我会确保数据实际上以您期望的形式出现(日志语句?)
  • 我想访问每个元素,看看是否可以计算元组中有多少元素。但你是对的。我尝试移动一些断点并运行调试器,发现 map 不是我想的那样。

标签: python syntax tuples


【解决方案1】:

如果你有一个元组的元组,形式为((a, b), (x, y)),你可以迭代它的元素:

def method(tuples):
    for tup in tuples:
        for e in tup:
            print e

如果你想有4个变量,你可以分别使用它们:

def method(tuples):
    (a, b), (x, y) = tuples
    print a, b, x, y

注意: 不要使用 Python 内置名称作为变量的名称。换句话说,不要使用tuple 作为变量名,因为它是Python 中的type。使用其他东西,例如tuplesmy_tuple、...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-05
    • 2015-05-15
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多