繁体   English   中英

从粒子列表中创建唯一对

[英]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.

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