【发布时间】:2021-07-27 08:23:32
【问题描述】:
我有这个代码:
list1 = [(1, 2), (3, 4, 5), (6, 7, 8, 9), (10, 11)]
for tup_obj in list1:
if len(tup_obj) == 2:
for a, b in tup_obj:
print(a)
print(b)
elif len(tup_obj) == 3:
for a, b, c in tup_obj:
print(a)
print(b)
print(c)
elif len(tup_obj) == 4:
for a, b, c, d in tup_obj:
print(a)
print(b)
print(c)
print(d)
我需要解压列表中的元组
list1 = [(1, 2), (3, 4, 5), (6, 7, 8, 9), (10, 11)]
它由具有不同数量元素的元组组成。
我正在尝试获取列表中的每个项目(即,除了元组之外什么都没有),一旦选择它,我想检查该元组中有多少元素(例如,在第一种情况下,数字元组中的元素是 2)。
这是我使用内置的len 函数完成的。因此,如果是两个,我将取值作为a, b,如果选定的元组包含 3 或 4 个元素,则意味着我将变量取为 a, b, c 或 a, b, c, d。但是一旦这一步完成,它就说明它不能解压不可迭代的 int 对象。但我不知道为什么。
【问题讨论】:
-
你确定你的意思是像
for a, b in tup_obj:那样迭代吗?看来你只是想分配每个 tup 值,这将作为a, b = tup_obj完成 -
请添加堆栈跟踪。
标签: python for-loop if-statement tuples