使用列表推导按两两组合构建列表的列表

2 投票
6 回答
632 浏览
提问于 2025-04-17 00:33

我正在使用以下代码来创建一个列表的列表:

res = []
for i in I:
   res.append(x)
   res.append(y[i])

所以我最终得到的列表是 [x, y[0], x, y[1],...],其中 xy[i] 也是列表。

有没有办法用列表推导式来构建这个列表,而不是使用for循环呢?

6 个回答

2
res = reduce(tuple.__add__,  [(x, y[i]) for i in I])

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。

2

Itertools 是一个可以帮助处理这类问题的工具:

>>> y = I = range(5)
>>> x = 'x'
>>> res = list(itertools.chain.from_iterable((x, y[i]) for i in I))
>>> res
['x', 0, 'x', 1, 'x', 2, 'x', 3, 'x', 4]
2

我觉得这可能接近你想要的东西:

res = [z for z in ((x, y[i]) for i in I)]

撰写回答