Python - 如何检查子列表中的值

时间:2012-11-20 21:07:01

标签: python list for-loop iterator

我正在尝试将子列表附加到相同类型的子列表的更大列表中。

子列表:

[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

3 个答案:

答案 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二进制搜索找到您要搜索的内容。

虽然这可能只是在您期待大量重复时才有用,否则简单的线性搜索就足够了。

注意:最初,建议按距离排序,经过反思,这种情况在这种情况下不是很有用。