gpt4 book ai didi

python - 删除 python 集中的重复交互对

转载 作者:太空狗 更新时间:2023-10-30 01:45:06 25 4
gpt4 key购买 nike

假设你有一个 python 集合中的元组列表:

>>> pairs = set( [(0,1),(0,1),(1,0)] )
>>> print pairs
set([(0, 1), (1, 0)])

显然,前两个元素是重复的,并且根据对于集合的定义,“对”仅包含唯一元素。

但是,在我的特定情况下,元组 (i,j) 定义了一个交互对。因此,(i,j) 和 (j,i) 是相同的。我需要一种有效的方法来减少所有重复项元素。计算时间对我来说至关重要,因为整个集合很容易包含多达 10**6 个元素。我希望得到以下结果:

>>> pairs = set( [(0,1),(0,1),(1,0)] )
>>> pairs = remove_duplicate_interactions(pairs)
>>> print pairs
set([0,1]) or set([1,0])

感谢任何提示。

编辑:

有人问上下文。这应该用于粒子模拟。由于对称条件,粒子 i 作用在 j 上的力与粒子 j 作用在 i 上的力相同。因此,计算时间减少了 50%。

最佳答案

怎么样:

In [4]: pairs = set( [(0,1),(0,1),(1,0),(1,2),(1,0),(2,1)] )

In [5]: set((a,b) if a<=b else (b,a) for a,b in pairs)
Out[5]: set([(0, 1), (1, 2)])

关于python - 删除 python 集中的重复交互对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9502469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com