[英]How do I Flatten Deeply Nested Tuples?
我給了一個元組的嵌套結構,每個元組有2個元素,並想將其轉換為平面結構
我試過使用*來遍歷和展平,但是由於每個元組嵌套在另一個元組中而被卡住了
輸入示例: (((((1, 2), 3), 4), 5), 6)
示例輸出: (1, 2, 3, 4, 5, 6)
使用遞歸
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))
您可以將遞歸與生成器一起使用,以獲得更短,更簡潔的解決方案:
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)
機智:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.