Python 如何从两个列表的笛卡尔乘积连接字符串
我有两个字符串列表:Python 如何从两个列表的笛卡尔乘积连接字符串,python,string,list,concatenation,cartesian-product,Python,String,List,Concatenation,Cartesian Product,我有两个字符串列表: letters = ['abc', 'def', 'ghi'] numbers = ['123', '456'] 我想对它们进行for循环,以创建一个不平行的字符串列表,因此zip在这里不起作用 预期结果: result = ['abc123', 'def123', 'ghi123', 'abc456', 'def456', 'ghi456'] 结果中元素的顺序是不相关的 有什么想法吗?取数字和字母的乘积,而不是字母和数字,然后按相反的顺序连接生成的元组 对于2元组,y
letters = ['abc', 'def', 'ghi']
numbers = ['123', '456']
我想对它们进行for循环,以创建一个不平行的字符串列表,因此zip在这里不起作用
预期结果:
result = ['abc123', 'def123', 'ghi123', 'abc456', 'def456', 'ghi456']
结果中元素的顺序是不相关的
有什么想法吗?取数字和字母的乘积,而不是字母和数字,然后按相反的顺序连接生成的元组
对于2元组,y+x就足够了,而不是使用.join
两个列表的乘积就是所有可能的元组的集合,这些元组的创建顺序是从第一个列表中获取一个元素,从第二个列表中获取一个元素
>>> list(product(numbers, letters))
[('123', 'abc'), ('123', 'def'), ('123', 'ghi'), ('456', 'abc'), ('456', 'def'), ('456', 'ghi')]
取数字和字母的乘积,而不是字母和数字的乘积,然后按相反的顺序连接生成的元组
对于2元组,y+x就足够了,而不是使用.join
两个列表的乘积就是所有可能的元组的集合,这些元组的创建顺序是从第一个列表中获取一个元素,从第二个列表中获取一个元素
>>> list(product(numbers, letters))
[('123', 'abc'), ('123', 'def'), ('123', 'ghi'), ('456', 'abc'), ('456', 'def'), ('456', 'ghi')]
您可以尝试使用两个嵌套的for循环数字和字母来理解列表:
也可以使用嵌套for循环:
有关列表理解的详细信息,请参阅或此。您可以尝试使用两个嵌套的For循环数字和字母进行列表理解:
也可以使用嵌套for循环:
有关列表理解的更多详细信息,请参阅或此。谢谢您的回答!我简化了这个例子,所以上面所有的解决方案都很好地工作,但是在我正在处理的实际问题中,我想在这两个列表之间添加更多的代码行。我完成了嵌套这些循环:
for letter in letters:
for number in numbers:
print(letter+number)
# many many lines of more code
无论如何,非常感谢你的帮助 谢谢你的回答!我简化了这个例子,所以上面所有的解决方案都很好地工作,但是在我正在处理的实际问题中,我想在这两个列表之间添加更多的代码行。我完成了嵌套这些循环:
for letter in letters:
for number in numbers:
print(letter+number)
# many many lines of more code
无论如何,非常感谢你的帮助 给定必须组合的前缀字母和后缀数字列表 字母=['abc','def','ghi'] 数字=['123','456'] 基本的 首先想到的解决方案是使用嵌套循环,特别是如果您是Python新手的话 结果=[] 对于字母形式的字母: 对于n个数字: 结果。附加+n 正如你所说的,顺序是不相关的,所以下面的方法也是有效的 结果=[] 对于n个数字: 对于字母形式的字母: 结果。附加+n 这两种方法最重要的缺点是,您需要以一种看起来有点弱的方式定义结果变量 先进的 如果你切换到,你可以消除额外的线路 结果=[s+n表示数字中的n表示字母中的s] 专家 从数学上讲,你正在创造数字和字母的组合。Python提供了一个函数来实现这个目的,顺便说一句,它还消除了双for 来自itertools进口产品 结果=[.joinp表示产品字母、数字中的p] 在您的示例中,这可能看起来有些过火,但一旦涉及到构建结果的更多组件,这可能会有很大的不同,并且这里介绍的所有工具(除了itertools.product)都会随之爆炸 为了进行说明,我以一个在前缀、中缀和后缀上循环的示例作为结束: 打印[.joinp表示产品'ab'、'+-'、'12'中的p] 这将产生以下输出: ['a+1','a+2','a-1','a-2','b+1','b+2','b-1','b-2']
给定必须组合的前缀、字母和后缀数字列表 字母=['abc','def','ghi'] 数字=['123','456'] 基本的 首先想到的解决方案是使用嵌套循环,特别是如果您是Python新手的话 结果=[] 对于字母形式的字母: 对于n个数字: 结果。附加+n 正如你所说的,顺序是不相关的,所以下面的方法也是有效的 结果=[] 对于n个数字: 对于字母形式的字母: 结果。附加+n 这两种方法最重要的缺点是,您需要以一种看起来有点弱的方式定义结果变量 先进的 如果你切换到,你可以消除额外的线路 结果=[s+n表示数字中的n表示字母中的s] 专家 从数学上讲,你正在创造数字和字母的组合。Python提供了一个函数来实现这个目的,顺便说一句,它还消除了双for 来自itertools进口产品 结果=[.joinp表示产品字母、数字中的p] 在您的示例中,这可能看起来有些过火,但一旦涉及到构建结果的更多组件,这可能会有很大的不同,并且这里介绍的所有工具(除了itertools.product)都会随之爆炸 为了进行说明,我以一个在前缀、中缀和后缀上循环的示例作为结束: 打印[.joinp表示产品'ab'、'+-'、'12'中的p] 那就 此输出: ['a+1','a+2','a-1','a-2','b+1','b+2','b-1','b-2']
两个嵌套for循环有什么问题?@Wolf正是我要找的!我就是说不出它的名字这回答了你的问题吗?还有:还有:两个嵌套for循环有什么问题?@Wolf正是我要找的!我就是说不出它的名字这回答了你的问题吗?另外:还有:多行代码可能会进入一个函数:多行代码可能会进入一个函数:
for letter in letters:
for number in numbers:
print(letter+number)
# many many lines of more code