繁体   English   中英

将单个元组的列表变成没有元组的列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM