繁体   English   中英

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

[英]compare elements in list to every other element in same list

我正在使用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])

但这仅对列表中的第一个元素执行任务

您可以使用列表推导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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM