如何在python中展平嵌套列表?
如何转换:如何在python中展平嵌套列表?,python,Python,如何转换: THIS = \ ['logging', ['logging', 'loggers', ['logging', 'loggers', 'MYAPP', ['logging', 'loggers', 'MYAPP', '-handlers'], ['logging', 'loggers', 'MYAPP', 'propagate'] ] ], ['logging', 'version'] ] 进入: 在python中(它不需要排序,只需要展平) 我已经尝试了
THIS = \
['logging',
['logging', 'loggers',
['logging', 'loggers', 'MYAPP',
['logging', 'loggers', 'MYAPP', '-handlers'],
['logging', 'loggers', 'MYAPP', 'propagate']
]
],
['logging', 'version']
]
进入:
在python中(它不需要排序,只需要展平)
我已经尝试了很多方法,但找不到解决方法。这就是递归函数真正发挥作用的地方:
def flatten(myList):
def inner(current, acc):
items = []
for x in myList:
if isinstance(x, list):
acc.extend(inner(x, []))
else:
items.append(x)
acc.extend(items)
return acc
return inner(myList, [])
我相信这应该可以解决问题。用递归生成器解决
def flatten(items):
non_list_items = []
for item in items:
if isinstance(item, list):
for inner_item in flatten(item):
yield inner_item
else:
non_list_items.append(item)
yield non_list_items
根据您的输入进行测试:
from pprint import pprint
>>> pprint(sorted(flatten(THIS)))
[['logging'],
['logging', 'loggers'],
['logging', 'loggers', 'MYAPP'],
['logging', 'loggers', 'MYAPP', '-handlers'],
['logging', 'loggers', 'MYAPP', 'propagate'],
['logging', 'version']]
你看,特别是。还要谢谢你。我一直在努力得到这个
from pprint import pprint
>>> pprint(sorted(flatten(THIS)))
[['logging'],
['logging', 'loggers'],
['logging', 'loggers', 'MYAPP'],
['logging', 'loggers', 'MYAPP', '-handlers'],
['logging', 'loggers', 'MYAPP', 'propagate'],
['logging', 'version']]