我怎样才能转换:
THIS = \
['logging',
['logging', 'loggers',
['logging', 'loggers', 'MYAPP',
['logging', 'loggers', 'MYAPP', '-handlers'],
['logging', 'loggers', 'MYAPP', 'propagate']
]
],
['logging', 'version']
]
Run Code Online (Sandbox Code Playgroud)
成:
THAT = [
['logging'],
['logging', 'version'],
['logging', 'loggers'],
['logging', 'loggers', 'MYAPP'],
['logging', 'loggers', 'MYAPP', '-handlers'],
['logging', 'loggers', 'MYAPP', 'propagate']
]
Run Code Online (Sandbox Code Playgroud)
在python中(它不需要排序,只是扁平化)?
我已经尝试了很多东西但是找不到如何解决这个问题.
用递归生成器解决
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
Run Code Online (Sandbox Code Playgroud)
根据您的输入进行测试:
from pprint import pprint
>>> pprint(sorted(flatten(THIS)))
[['logging'],
['logging', 'loggers'],
['logging', 'loggers', 'MYAPP'],
['logging', 'loggers', 'MYAPP', '-handlers'],
['logging', 'loggers', 'MYAPP', 'propagate'],
['logging', 'version']]
Run Code Online (Sandbox Code Playgroud)