【发布时间】:2023-02-19 02:58:37
【问题描述】:
我有以下列表列表:
data = [[1,2,3],[4,5,6]]
我想生成如下内容:
[1,4]
[1,5]
[1,6]
[2,4]
[2,5]
[2,6]
[3,4]
[3,5]
[3,6]
什么可以产生预期的结果?澄清一下,我正在从两个子列表中的每一个中寻找所有唯一的 1 项对。
【问题讨论】:
我有以下列表列表:
data = [[1,2,3],[4,5,6]]
我想生成如下内容:
[1,4]
[1,5]
[1,6]
[2,4]
[2,5]
[2,6]
[3,4]
[3,5]
[3,6]
什么可以产生预期的结果?澄清一下,我正在从两个子列表中的每一个中寻找所有唯一的 1 项对。
【问题讨论】:
import itertools
data = [[1,2,3],[4,5,6]]
print(list(itertools.product(*data)))
输出:
[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]
【讨论】:
您可以将 itertools.product() 与列表解包结合使用,以生成包含每个子列表中的一个元素的元组。然后,您可以使用 map() 将每个元组转换为列表。
from itertools import product
list(map(list, product(*data)))
这输出:
[[1, 4], [1, 5], [1, 6], [2, 4], [2, 5], [2, 6], [3, 4], [3, 5], [3, 6]]
【讨论】:
result = []
for x in data[0]:
for y in data[1]:
result.append([x, y])
或一行:
[(x,y) for x in data[0] for y in data[1]]
这会给你一个元组列表
列表列表:
list(map(list, [(x,y) for x in data[0] for y in data[1]]))
【讨论】: