当前位置: 首页 > 面试题库 >

如何使用列表理解将一个元组的元组转换为一维列表?

巫马浩言
2023-03-14
问题内容

我有一个元组元组-例如:

tupleOfTuples = ((1, 2), (3, 4), (5,))

我想按顺序将其转换为所有元素的平面一维列表:

[1, 2, 3, 4, 5]

我一直在尝试通过列表理解来实现。但我似乎无法弄清楚。我能够通过for-each循环来完成它:

myList = []
for tuple in tupleOfTuples:
   myList = myList + list(tuple)

但是我觉得必须有一种方法来理解列表。

一个简单的[list(tuple) for tuple in tupleOfTuples]只是给您一个列表列表,而不是单个元素。我以为可以通过使用拆包运算符然后将列表拆包来建立此基础,如下所示:

[*list(tuple) for tuple in tupleOfTuples]

要么

[*(list(tuple)) for tuple in tupleOfTuples]

…但是那没用。有任何想法吗?还是我应该坚持下去?


问题答案:

它通常被称为展平嵌套结构。

>>> tupleOfTuples = ((1, 2), (3, 4), (5,))
>>> [element for tupl in tupleOfTuples for element in tupl]
[1, 2, 3, 4, 5]

只是为了展示效率:

>>> import timeit
>>> it = lambda: list(chain(*tupleOfTuples))
>>> timeit.timeit(it)
2.1475738355700913
>>> lc = lambda: [element for tupl in tupleOfTuples for element in tupl]
>>> timeit.timeit(lc)
1.5745135182887857

ETA :请不要将其tuple用作变量名,因为它是内置的。



 类似资料:
  • 我正在尝试将列表的元组转换为列表,但是我没有成功,所以我有了这个函数 获取输入,例如: ( [1,2,3,4], [7,8,9] ) 并应返回: [1,7,2,8,3,9,4] 我有 结果是: [1,7,2,8,3,9***异常:hw2.hs:29: 1-54:函数函数中的非穷尽模式 我知道我得到这个错误,因为列表是不一样的大小,你们怎么认为我可以解决这个问题

  • 问题内容: 我是Python的新手,需要将列表转换为字典。我知道我们可以将元组列表转换为字典。 这是输入列表: 并且我想将此列表转换为元组列表(或直接转换为字典),如下所示: 我们如何在Python中轻松做到这一点? 问题答案: 您想一次将三个项目分组吗? 您想一次分组N个项目吗?

  • 问题内容: 假设我有一个元组列表,并且我想转换为多个列表。 例如,元组列表是 Python中是否有任何内置函数可以将其转换为: 这可以是一个简单的程序。但是我只是对Python中存在这种内置函数感到好奇。 问题答案: 内置功能几乎可以满足您的需求: 唯一的区别是您得到元组而不是列表。您可以使用将它们转换为列表

  • 问题内容: 我如何转换 至 问题答案: 使用简单的列表理解: 会给你:

  • 问题内容: 我已经编写了此函数,用于将元组列表转换为列表列表。有没有更优雅的/ Pythonic的方式来做到这一点? 问题答案: 您可以使用列表推导:

  • 问题内容: 例如,如果我有一个元组列表 如何解开元组并将其重新格式化为一个列表 我认为这也与功能有关,但是我真的不知道该怎么做。请赐教。 问题答案: b = [i for sub in a for i in sub] 这样就可以了。