Python:遍历两个列表,如果满足条件就添加到其中,但是每次遍历列表的每个元素

2024-10-01 19:27:41 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我运行一次,它将工作并返回成功。然后,当循环再次运行时,它将只检查列表的最后一个元素。如何使循环运行并检查条件语句中列表的每个元素

def draw():
    mesasX, mesasY = [], []
    x, y = random.randint(6,94), random.randint(6,94)
    mesasX.append(x)
    mesasY.append(y)
    for mesax, mesay in zip(mesasX, mesasY):
        x, y = random.randint(6,94), random.randint(6,94)
        if (x - 8 < mesax < x + 8 and y + 8 > mesay > y - 8):
            print("Failed")
        else:
            mesasX.append(x)
            mesasY.append(y)
            print("Success!")  
            break

Tags: 元素列表fordefrandom语句条件print
1条回答
网友
1楼 · 发布于 2024-10-01 19:27:41

你想把每一个新项目和每一个旧项目进行比较。这样做的方法是移动循环。并使用all

def draw():
    mesasX, mesasY = [], []
    x, y = random.randint(6,94), random.randint(6,94)
    mesasX.append(x)
    mesasY.append(y)
    while True:
        x, y = random.randint(6,94), random.randint(6,94)
        if all(x - 8 < mesax < x + 8 and y + 8 > mesay > y - 8 
               for mesax, mesay in zip(mesasX, mesasY)):
            print("Failed")
        else:
            mesasX.append(x)
            mesasY.append(y)
            print("Success!")  
            break

这读起来像这样:如果它合适,就生成一个item测试;如果它确实将它添加到列表并停止,就不再尝试

如果将列表替换为以一个点为中心的16乘16个单位框的空间索引,则可以更快地执行此操作。这将允许一个人把近距离测试变成一个箱点测试,这可能是接近恒定的时间

然后,如果一个人能从这些盒子的并集中均匀地取样,这将消除测试,因为每个生成的项目都将通过测试

相关问题 更多 >

    热门问题