[英]Creating unique pairs from a list of particles
我已经有代码,其中我制作了独特的质子和中子对,它们分别存储在列表 self.p 和 self.n 中。 我还想从这两个列表中获得独特的质子对和独特的中子对。
制作质子-中子对的代码:
for proton in self.p:
for neutron in self.n:
self.pn_combinations.append([proton, neutron])
我不能简单地在 self.p 上迭代两次来创建唯一的质子对,因为列表将包含重复的和相同的集合对,只是以相反的顺序。 所以我不确定如何进行。
例如 self.p 可以包含 3 个粒子:
self.p = [[1,2,3,4], [5,6,7,8], [9, 10, 11, 12]]
并想 output:
Pairs = [[[1,2,3,4], [5,6,7,8]],[[1, 2, 3, 4],[9,10,11,12]], [[5,6,7,8], [9,10,11,12]]]
其中成对的每个项目都是 self.p 中质子的独特组合
您可以将每个particles
视为一个元素并使用itertools.combinations()
from itertools import combinations
p = [[1,2,3,4], [5,6,7,8], [9, 10, 11, 12]]
pairs = [list(combination) for combination in combinations(p, 2)]
print(pairs)
output: [[[1, 2, 3, 4], [5, 6, 7, 8]], [[1, 2, 3, 4], [9, 10, 11, 12]], [[5, 6, 7, 8], [9, 10, 11, 12]]]
您可以从一个索引向上使用第二个循环,然后外部循环位于:
p = [[1,2,3,4], [5,6,7,8], [9, 10, 11, 12]]
particels = []
for i, part in enumerate(p):
for part2 in p[i+1:]:
particels.append( (part ,part2) )
print(particels)
Output:
[([1, 2, 3, 4], [5, 6, 7, 8]),
([1, 2, 3, 4], [9, 10, 11, 12]),
([5, 6, 7, 8], [9, 10, 11, 12])]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.