将元组转换为列表的大多数 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]
但我个人更喜欢
中的链式理解解决方案
问题可能比较混乱,举个例子:
我想从 (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]
但我个人更喜欢