Python 在列表中搜索列表中项目的重复项
在一个基础项目中工作,使用matplotlib模拟生物体的生命周期。生物体的位置由列表[x,y]定义,其位置是随机生成的。生物是阶级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个这样的物体,这意味着会发生碰撞
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)