一个例子:
list = [[2, 1, 2, 3, 4],
[0, 4, 5],
[1, 8, 9]]
因此,嵌套列表中的第一个索引决定将哪些后续数字放入非嵌套列表中。
[2, 1, 2, 3, 4] -> 2: so 1 and 2 gets picked up
[0, 4, 5] -> 0: no number gets picked up
[1, 8, 9] -> 1; number 8 gets picked up
输出为:
[1, 2, 8]
这是我到目前为止所拥有的:
def nested_list(numbers):
if isinstance(numbers[0], list):
if numbers[0][0] > 0:
nested_list(numbers[0][1:numbers[0][0] + 1])
else:
numbers = list(numbers[0])
return numbers + nested_list(numbers[1:])
我尝试通过递归获取列表,但出现问题。我错过了什么或者即使没有递归也可以做到这一点?
最佳答案
您尝试在此处使用列表理解和元组解包。
[val for idx, *rem in lst for val in rem[:idx]]
# [1, 2, 8]
NB This solution assumes you would always have a sub-list of size 1 or greater. We can filter out empty sub-lists using
filter(None, lst)
关于python - 迭代嵌套列表并选择某些元素并创建一个新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69783807/