Python 在列表中搜索列表中项目的重复项

Python 在列表中搜索列表中项目的重复项,python,list,search,duplicates,output,Python,List,Search,Duplicates,Output,在一个基础项目中工作,使用matplotlib模拟生物体的生命周期。生物体的位置由列表[x,y]定义,其位置是随机生成的。生物是阶级 for i in range(numorganisms): posX = random.randint(0,XMAX) posY = random.randint(0,YMAX) creatures.append(organism([posX,posY])) 图中可能有100个这样的物体,这意味着会发生碰撞

在一个基础项目中工作,使用matplotlib模拟生物体的生命周期。生物体的位置由列表[x,y]定义,其位置是随机生成的。生物是阶级

    for i in range(numorganisms):
        posX = random.randint(0,XMAX)
        posY = random.randint(0,YMAX)
        creatures.append(organism([posX,posY]))

图中可能有100个这样的物体,这意味着会发生碰撞。我希望能够在生物列表中搜索posX和posY都相等的实例,然后创建这些位置的新列表。

您可以轻松地执行以下操作:

existing = set()
for i in range(numorganisms):
    posX = random.randint(0,XMAX)
    posY = random.randint(0,YMAX)
    if (posX, posY) not in existing :
        creatures.append(organism([posX,posY]))
        existing.add( (posX, posY) )
    else :
        pass   # do something else

您可以轻松做到这一点:

existing = set()
for i in range(numorganisms):
    posX = random.randint(0,XMAX)
    posY = random.randint(0,YMAX)
    if (posX, posY) not in existing :
        creatures.append(organism([posX,posY]))
        existing.add( (posX, posY) )
    else :
        pass   # do something else

这假设您有某种方法可以从
有机体的实例中获取位置

###############################
# This just recreates what I think you already have
import random
class organism:
    def __init__(self, l):
        self.l = l

XMAX = YMAX = 100
creatures = []
for i in range(100):
    posX = random.randint(0,XMAX)
    posY = random.randint(0,YMAX)
    creatures.append(organism([posX,posY]))
print(creatures)
###############################

# Determine if there are redundancies
positions = [x.l for x in creatures]
print(positions)
collisions = [i for i in positions if positions.count(i) > 1]
print(collisions)

这假设您有某种方法可以从
有机体的实例中获取位置

###############################
# This just recreates what I think you already have
import random
class organism:
    def __init__(self, l):
        self.l = l

XMAX = YMAX = 100
creatures = []
for i in range(100):
    posX = random.randint(0,XMAX)
    posY = random.randint(0,YMAX)
    creatures.append(organism([posX,posY]))
print(creatures)
###############################

# Determine if there are redundancies
positions = [x.l for x in creatures]
print(positions)
collisions = [i for i in positions if positions.count(i) > 1]
print(collisions)