[英]Turn a list of single tuples into a list without tuples
我正在使用如下所示的单个元组列表:
data = [[('jog',), ('Jim',), ('jell',), ('jig',)], [('jabs',), ('jilt',), ('job',), ('jet',)]]
请注意,该列表包含两个元素:两个列表包含 4 个元组。 基本上,我只是想删除每个元组并使其看起来像这样:
data = [['jog','Jim','jell','jig'], ['jabs','jilt','job','jet']]
我认为这可能可以通过列表理解来完成,但我已经尝试了几个小时并且无法想出神奇的公式。 有人能帮忙吗?
您正在寻找的 listcomp “魔术公式”最好使用嵌套 listcomp 完成,并在最里面的 listcomp 中使用解包:
data = [[x for [x] in sublist] for sublist in data]
那里的[x]
以最有效的方式触发对单个元素tuple
的解包(同时还验证它实际上每个tuple
只有一个元素,不多也不少)。 否则,它在很大程度上是一个无操作嵌套的 listcomp。
像这样使用列表理解:
data = [[('jog',), ('Jim',), ('jell',), ('jig',)], [('jabs',), ('jilt',), ('job',), ('jet',)]]
data = [[tup[0] for tup in lst] for lst in data]
print(data)
# [['jog', 'Jim', 'jell', 'jig'], ['jabs', 'jilt', 'job', 'jet']]
如果你想在列表中展平你的元组,你可以使用itertools.chain
:
import itertools
data = [[('jog',), ('Jim',), ('jell',), ('jig',)], [('jabs',), ('jilt',), ('job',), ('jet',)]]
result = [list(itertools.chain(*d)) for d in data]
# result = [['jog', 'Jim', 'jell', 'jig'], ['jabs', 'jilt', 'job', 'jet']]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.