将列表中的元素与同一列表中的每个其他元素进行比较

时间:2017-05-26 22:13:47

标签: python

我使用的是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])

但这只是执行列表中第一个元素的任务

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]