每个元素合并两个列表

时间:2020-07-06 21:50:52

标签: python-3.x list itertools

我是python的新手,想按这样的元素合并/合并两个列表:

输入

list = ['blue', 'red', 'green'] 
list2= ['trousers', 'shirt', 'pants'] 

所需的输出

desired list= ['blue trousers', 'blue shirt', 'blue pants', 'red trouser', 'red shirt', 'red pants',         'green trouser', 'green shirt', 'green pants']

我研究了stackoverflow,并提出了itertools库和笛卡尔乘积。 所以我尝试了这个:

from itertools import product 
  
def cartesian_product(arr1, arr2): 
  
    # return the list of all the computed tuple 
    # using the product() method 
    return list(product(arr1, arr2))  
    
# Driver Function  
if __name__ == "__main__":  
    arr1 = ['blue', 'red', 'green'] 
    arr2 = ['trouser', 'shirt', 'pants'] 
    print(cartesian_product(arr1, arr2)) 

这是接近的输出(但是将结果打包到元组而不是元素中):

[('blue', 'trouser'), ('blue', 'shirt'), ('blue', 'pants'), ('red', 'trouser'), ('red', 'shirt'), ('red', 'pants'), ('green', 'trouser'), ('green', 'shirt'), ('green', 'pants')]

有人建议我如何从那里获得所需的输出吗?

2 个答案:

答案 0 :(得分:0)

x = [('blue', 'trouser'), ('blue', 'shirt'), ('blue', 'pants'), ('red', 'trouser'), ('red', 'shirt'), ('red', 'pants'), ('green', 'trouser'), ('green', 'shirt'), ('green', 'pants')]
for i in x:
     y += [i[0] + " " + i[1]]
print(y)

输出:

['blue trouser', 'blue shirt', 'blue pants', 'red trouser', 'red shirt', 'red pants', 'green trouser', 'green shirt', 'green pants']

答案 1 :(得分:0)

您可以使用以下技术(不使用itertools)进行操作:

list1 = ['blue', 'red', 'green'] 
list2 = ['trousers', 'shirt', 'pants']
desired_list = []

for colour in list1:
    for garment in list2:
        desired_list.append(colour + ' ' + garment)

对于第一个列表中的每个元素,它将遍历第二个列表中的每个元素,并提供以下输出:

['blue trousers', 'blue shirt', 'blue pants', 'red trousers', 'red shirt',
'red pants', 'green trousers', 'green shirt', 'green pants']

很抱歉,这样做有更有效的方法!希望对您有所帮助。