首页 > 解决方案 > 从 N 个元组中获取所有值

问题描述

我创建了一个递归函数来显示更大集合中的所有 k 大小的子集。简单地打印出子集时没有问题,但是当我想返回集合时遇到了麻烦,如果以后需要使用它们。

这是起始集 [3,5,7,9] 的输出

((((0, 0), (0, [3, 5])), ((0, [3, 7]), ([3, 9], 0))), (((0, [5, 7]), ([5, 9], 0)), (([7, 9], 0), (0, 0))))

这只是一个快速片段,可以查看输出的外观,它看起来像这样:

a=list1([3,5,7,9],0,0,0,[],2)


for i in a:
    for j in i:
        for k in j:
            print(k)
(0, 0)

(0, [3, 5])

(0, [3, 7])

([3, 9], 0)

(0, [5, 7])

([5, 9], 0)

([7, 9], 0)

(0, 0)

由于我想要的列表的索引从一个元组变为另一个元组,并且您需要去的深度也根据起始集的大小而变化,我真的不知道如何只从中提取最终列表输出。

标签: python

解决方案


list_of_lists=list()
def test_tuple(t): #where t is a tuple
    for element in tuple:
        if type(element) == type(list()):
            list_of_lists.append(element)
        elif type(element) == type(tuple()):
            test_tuple(element)

由于您已经将输出存储在一个大元组中,您只需将该大元组传递给 test_tuple 并声明一个包含所有提取列表的变量。除非您执行诸如创建无限递归列表之类的操作,否则这应该可以解决问题。


推荐阅读