Python压扁不规则lis

2024-10-03 23:23:45 发布

您现在位置:Python中文网/ 问答频道 /正文

如何展平此列表:

irr_list = [[[u'Animal Collective'], u'Lion in a Coma'], [[u'Animal Collective'], u'Hocus Pocus'], [[u'Animal Collective'], u'Vertical'], [[u'Animal Collective'], u'Natural Selection'], [[u'Animal Collective'], u'Spilling Guts'], [[u'Animal Collective'], u'Recycling']]

对于这个期望的输出?你知道吗

output = [[u'Animal Collective', u'Lion in a Coma'], [u'Animal Collective', u'Hocus Pocus'], [u'Animal Collective', u'Vertical'], [u'Animal Collective', u'Natural Selection'], [u'Animal Collective', u'Spilling Guts'], [u'Animal Collective', u'Recycling']]

我试过:

flattened = [val for sublist in irr_list for val in sublist]

无济于事


Tags: incollectivenaturallistverticalselectionanimalirr
2条回答

你可以试试这个:

import itertools

new_data = [list(itertools.chain.from_iterable([[b] if not isinstance(b, list) else b for b in i])) for i in irr_list]

输出:

[[u'Animal Collective', u'Lion in a Coma'], [u'Animal Collective', u'Hocus Pocus'], [u'Animal Collective', u'Vertical'], [u'Animal Collective', u'Natural Selection'], [u'Animal Collective', u'Spilling Guts'], [u'Animal Collective', u'Recycling']]

如果您的列表总是[[list, element], [list, element], ...]形式,那么您可以使用列表理解

output = [[l[0], e] for l, e in irr_list]

相关问题 更多 >