我真的想知道如何从两个列表中提取所有元素并相互相乘。例如,如果有两个列表
A=[1,3,5,7,9]
B=[2,4,6,8]
我想做1X2,1X4,1X6,1x8,3x2 ......等 来自A的一个元素来自B的一个元素。 我试图使用拉链但由于长度差异,我无法得到正确的答案。
答案 0 :(得分:5)
您的问题似乎想要两个列表之间的笛卡尔积,您可以使用itertools.product
将A
中的每个元素与B
中的每个元素绑定:
>>> 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)]
然后,如果你想将每个元组中的两个元素相乘,你可以这样做:
>>> [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]
答案 1 :(得分:0)
要从列表中获取随机值,您可以执行类似以下操作:
import random
lst = [10,20,30]
x = random.choice(lst)
导入随机库可以访问大量随机生成工具。根据随机库文档(https://docs.python.org/3/library/random.html), random.choice(seq)从非空序列(例如列表)返回随机元素。因此,上面的代码从 lst 中随机选择一个元素,并将该值赋给变量 x 。
在您尝试使用随机库之前,我不想放弃解决方案,因此我们会让您弄清楚如何使用上述信息。
答案 2 :(得分:0)
您可以使用for循环:
A中每个项目的操作与B中的每个项目:
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中的每个项目:
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)