Multiply all combinations of two lists
我真的想知道如何从两个列表中提取所有元素,并将它们相乘。例如,如果有两个列表
1 2 | A=[1,3,5,7,9] B=[2,4,6,8] |
我想做1×2,1×4,1×6,1×8,3×2…等。A中的一个元素x B中的一个元素。我试着用拉链,但由于长度的不同,我找不到正确的答案。
由于您的问题似乎需要两个列表之间的笛卡尔积,您可以使用
1 2 3 4 5 | >>> from itertools import product >>> A = [1,3,5,7,9] >>> B = [2,4,6,8] >>> list(product(A, B)) [(1, 2), (1, 4), (1, 6), (1, 8), (3, 2), (3, 4), (3, 6), (3, 8), (5, 2), (5, 4), (5, 6), (5, 8), (7, 2), (7, 4), (7, 6), (7, 8), (9, 2), (9, 4), (9, 6), (9, 8)] |
。
然后,如果要将每个元组中的两个元素相乘,可以这样做:
1 2 | >>> [x * y for x, y in product(A, B)] [2, 4, 6, 8, 6, 12, 18, 24, 10, 20, 30, 40, 14, 28, 42, 56, 18, 36, 54, 72] |
可用于循环:
A中每个项目和B中每个项目的操作:
1 2 3 4 5 6 7 8 9 | A=[1,3,5,7,9] B=[2,4,6,8] C = [] #Create an empty list for i in A: #iter each element in A for j in B: #iter each element in B mult = i * j C.append(mult) #Append the result in the list C print(C) |
号
A中随机项与B中每个项的操作:
1 2 3 4 5 6 7 8 9 10 11 12 | import numpy as np A=[1,3,5,7,9] B=[2,4,6,8] C = [] #Create an empty list for i in A: #iter each element in A i = np.random.randint(len(A)) #Chose a random number from A for j in B: #iter each element in B mult = A[i] * j #Multiply a random number from A with each element in B C.append(mult) #Append the result in the list C print(C) |
要从列表中获取随机值,可以执行以下类似操作:
1 2 3 | import random lst = [10,20,30] x = random.choice(lst) |
通过导入随机库,您可以访问大量的随机生成工具。根据随机库文档(https://docs.python.org/3/library/random.html),random.choice(seq)从非空序列(如列表)返回随机元素。因此,上面的代码从lst中随机选择一个元素,并将该值赋给变量x。
在您尝试使用随机库之前,我不想给出解决方案,所以我将让您了解如何使用上面的信息。