我正在尝试将子列表附加到相同类型的子列表的更大列表中。
子列表:
[x-value,y-value, i, 100]
但是,我希望我的代码在添加之前检查是否已经存在具有相同x值和y值的子列表,因此,在这种情况下,我没有重叠的树(不是'请问)。
这就是我构建列表的方式:
food = []
for i in range(amount):
food.append([
randint(100, 700), #X
randint(100, 700), #Y
i, #identifier
100]) #energy
答案 0 :(得分:1)
如果您正在尝试确保(x, y)
值的唯一性并且您有与之关联的数据,那么这是字典的完美用例:
food = {}
for i in range(amount):
coords = randint(100, 700), randint(100, 700)
if coords not in food:
food[coords] = [
i, #identifier
100, # energy
]
答案 1 :(得分:0)
food = []
for i in range(amount):
x,y = randint(100, 700),randint(100, 700)
value = [x,y,i,100]
if all([True if x[0]!=x and x[1]!=y else False for x in food]): #check for duplicated x,y
food.append(value)
答案 2 :(得分:0)
除了使用“in”,或者按词典排序它们的字典可能是更好的方法。然后使用2D二进制搜索找到您要搜索的内容。
虽然这可能只是在您期待大量重复时才有用,否则简单的线性搜索就足够了。
注意:最初,建议按距离排序,经过反思,这种情况在这种情况下不是很有用。