将元组转换为列表的大多数 Pythonic 方式,在每个现有元素之后添加新元素

Most Pythonic way to convert tuple to list, with new elements after each existing one

问题可能比较混乱,举个例子:

我想从 (a, b, c) 这样的元组转换为 [a, 1, b, 1, c, 1] 形式的列表。执行此操作的最 Pythonic 方法是什么?我尝试了 [*(x, 1) for x in list] 之类的东西,然后才意识到您无法在列表理解中解包。最好的方法是什么?我已经搜索了一段时间,但找不到任何有用的信息。

您可以在列表理解中“解包”,但不完全是那样。使用另一个循环。

xs = (a, b, c)
[e for x in xs for e in (x, 1)]

您可以使用 itertools.chain.from_iterable:

>>> from itertools import chain
>>> t = ('a', 'b', 'c')
>>> list(chain.from_iterable((x, 1) for x in t))
['a', 1, 'b', 1, 'c', 1]

但我个人更喜欢

中的链式理解解决方案