Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从两个列表的笛卡尔乘积连接字符串_Python_String_List_Concatenation_Cartesian Product - Fatal编程技术网

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