我使用的是Python 2.7。如果我有清单
a = [1,2,3,4,5]
我想要一个包含
之类的新列表b = [a[0]*a[1], a[0]*a[2], a[0]*a[3], a[0]*a[4], a[1]*a[0], a[1]*a[2], ... ]
其中每个元素都被其他元素多元化,但不要随意使用。我的直觉告诉我要做以下事情(以非常非pythonic的方式):
b = []
for i in range(0,len(a)):
b.append(a[i]*a[i+1])
但这只是执行列表中第一个元素的任务
答案 0 :(得分:0)
您可以使用列表理解和enumerate
执行乘法,它允许使用过滤器跳过自我乘法:
prods = [x*y for i, x in enumerate(a) for j, y in enumerate(a) if i!=j]
print(prods)
# [2, 3, 4, 5, 2, 6, 8, 10, 3, 6, 12, 15, 4, 8, 12, 20, 5, 10, 15, 20]