python - Python笛卡尔积输出
问题描述
我有以下输入:
input = (['AA', 'BB', 'CC', 'DD'], '4100314')
我希望输出为 ('AA','4100314'), ('BB','4100314'), ('CC','4100314'), ('DD','4100314')
解决方案
在您的具体示例中,这将起作用:
input1 = ['AA', 'BB', 'CC', 'DD']
input2 = '4100314'
def product(a, b):
return list(map(lambda x: [x, b], a))
print(product(input1, input2))
输出:
[['AA', '4100314'], ['BB', '4100314'], ['CC', '4100314'], ['DD', '4100314']]
但我认为@Ani 的这个建议要好得多:获取一系列列表的笛卡尔积?
使用该方法的示例如下:
import itertools
input1 = ['AA', 'BB', 'CC', 'DD']
input2 = ['4100314']
def product(a, b):
out = []
for element in itertools.product(a, b):
out.append(element)
return out
print(product(input1, input2))
输出:
[('AA', '4100314'), ('BB', '4100314'), ('CC', '4100314'), ('DD', '4100314')]
这里的主要区别在于,使用第二种方法,您可以输入任意两个数组,它会输出正确的结果,而第一种方法仅适用于数组和单个变量,就像您的用例一样。
推荐阅读
- shell - gitlab-ci.yaml 执行shell脚本
- django - 找不到 GDAL 库(尝试了“gdal202”、“gdal201”、“gdal20”、“gdal111”、“gdal110”、“gdal19”)
- azure - Get-MsolUserRole Azure AD V2 cmdlet 等效项
- javascript - 从 Date 中删除微秒并使用 toISOString() 进行转换
- python - Pandas Groupby Grouper,我如何对每个组都不存在的日期进行分组?
- javascript - 尝试设置 Travis,安装前中断
- excel - 无法使用 VBA 将带有数据的标题从 Access 拉到 Excel,
- excel - 更改图表系列公式和阻止图表激活
- matlab - 如何保存迭代编号。在matlab中按下按键
- php - Doctrine 实体总是在持久化时保存 null,即使在设置时也是如此