如何使用递归创建由内部其他列表组成的列表
How can I create a list that is made up of other lists inside using recursion
示例:我有这个列表 [2,3,[1,2]],我希望我的最终列表是 [2,3,1,2]。
但我也有这些类型的列表,[1,(2,[2,3])],我需要以 [1,2,3,2,3] 这种形式保留它。
有谁知道怎么做。这将是一个很大的帮助。
谢谢
所以如果我没理解错的话,你想做的是按顺序创建一个列表及其子列表的所有元素的列表?坦率地说,这听起来像是一个糟糕的主意,但通过递归它是完全可行的:
def elementlist(input, output = []):
for element in input:
if not isinstance(element,(tuple,list)):
output.append(element)
else:
elementlist(element,output)
return output
list1 = [1,(2,[2,3,(2,3)])]
output = elementlist(list1)
print(output)
此解决方案的基本思想是通过列表将其元素添加到输出列表,除非它是列表或元组,在这种情况下,它将被发送到更深的递归级别以获取其个人元素。
您可以使用 try
和 except
而不是使用条件和类型检查 -
def recur(t):
try:
for x in t:
yield from recur(x)
except:
yield t
print(list(recur([1,(2,[2,3])])))
[1,2,2,3]
示例:我有这个列表 [2,3,[1,2]],我希望我的最终列表是 [2,3,1,2]。
但我也有这些类型的列表,[1,(2,[2,3])],我需要以 [1,2,3,2,3] 这种形式保留它。
有谁知道怎么做。这将是一个很大的帮助。
谢谢
所以如果我没理解错的话,你想做的是按顺序创建一个列表及其子列表的所有元素的列表?坦率地说,这听起来像是一个糟糕的主意,但通过递归它是完全可行的:
def elementlist(input, output = []):
for element in input:
if not isinstance(element,(tuple,list)):
output.append(element)
else:
elementlist(element,output)
return output
list1 = [1,(2,[2,3,(2,3)])]
output = elementlist(list1)
print(output)
此解决方案的基本思想是通过列表将其元素添加到输出列表,除非它是列表或元组,在这种情况下,它将被发送到更深的递归级别以获取其个人元素。
您可以使用 try
和 except
而不是使用条件和类型检查 -
def recur(t):
try:
for x in t:
yield from recur(x)
except:
yield t
print(list(recur([1,(2,[2,3])])))
[1,2,2,3]