Python笛卡尔积输出

问题描述

我有以下输入:

input = (['AA','BB','CC','DD'],'4100314')

我想输出为 ('AA','4100314'),('BB',('CC',('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',['CC',['DD','4100314']]

但我认为@Ani 的这个推荐要好得多:Get the cartesian product of a series of lists?

使用该方法的示例如下:

import itertools

input1 = ['AA','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',('CC',('DD','4100314')]

这里的主要区别在于,使用第二种方法,您可以输入任意两个数组,它会输出正确的结果,而第一种方法仅适用于数组和单个变量,就像您的用例一样。

>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...