gpt4 book ai didi

python - 寻找一种方法来删除重复的答案

转载 作者:太空宇宙 更新时间:2023-11-04 02:36:03 25 4
gpt4 key购买 nike

我想编写一个代码来检测表面上 100 个随机圆在 -15<=x,y<=15 范围内的碰撞。代码运行良好,但有一个问题恰好是重复的反向答案,例如程序给我的结果如下:

disc 1 with disc 85
disc 8 with disc 35
...................
disc 35 with disc 8
...................
disc 85 with disc 1
...................

所以它只会显示 1 和 85 而不是反转 85 和 1。我正在尝试弄清楚如何删除它们,因为我的下一部分代码需要它。

import math    
lista=[[],[],[]]
import random

for i in range(0,100):
lista[0].append(random.uniform(-14.5,14.5))
lista[1].append(random.uniform(-14.5,14.5))
lista[2].append(0.5)

def kol(a):
for i in range(0,100):
q1=lista[0][i]
w1=lista[1][i]
for k in range(0,100):
if k==i:
continue
q2=lista[0][k]
w2=lista[1][k]
if math.sqrt((abs(q1-q2))**2+(abs(w1-w2))**2)<1:
print('Kolizja dysków: ',i+1,'z',k+1)

print(kol(1))

最佳答案

你的循环检查了两次距离,因为你只排除了相同的索引,而不是上三角或下三角,这解释了重复。

我会按原样重写它:

for i in range(0,100):  
q1=lista[0][i]
w1=lista[1][i]
for k in range(i+1,100): # only above i
q2=lista[0][k]
w2=lista[1][k]
if ((abs(q1-q2))**2+(abs(w1-w2))**2)<1:
print('Kolizja dysków: ',i+1,'z',k+1)

顺便说一句,不要测试平方根,因为平方值 < 1 相当于值 < 1,所以节省一些计算能力。

关于python - 寻找一种方法来删除重复的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47859384/

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