我给了一个元组的嵌套结构,每个元组有2个元素,并想将其转换为平面结构
我尝试使用*进行循环和展平,但是由于每个元组嵌套在另一个元组中而被卡住了
示例输入:(((((1, 2), 3), 4), 5), 6)
示例输出:(1, 2, 3, 4, 5, 6)
答案 0 :(得分:2)
使用递归
def convert(data):
result = []
for item in data:
if isinstance(item, tuple):
result.extend(convert(item))
else:
result.append(item)
return tuple(result)
data = (((((1, 2), 3), 4), 5), 6)
print(convert(data))
答案 1 :(得分:1)
您可以将递归与生成器一起使用,以实现更短,更简洁的解决方案:
def flatten(d):
for i in d:
yield from [i] if not isinstance(i, tuple) else flatten(i)
print(tuple(flatten((((((1, 2), 3), 4), 5), 6))))
输出:
(1, 2, 3, 4, 5, 6)
答案 2 :(得分:0)
机智:
def flatten(T):
if T == ():
return T
if isinstance(T[0], tuple):
return flatten(T[0]) + flatten(T[1:])
return T[:1] + flatten(T[1:])
s = (((((1, 2), 3), 4), 5), 6)
print("Flattened tuple: ", flatten(s))
输出:
Flattened tuple: (1, 2, 3, 4, 5, 6)