我是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')]
有人建议我如何从那里获得所需的输出吗?
答案 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']
很抱歉,这样做有更有效的方法!希望对您有所帮助。