【问题标题】:Find and replace a screen coords from a list从列表中查找和替换屏幕坐标
【发布时间】:2021-10-23 10:05:54
【问题描述】:

我正在使用 OpenCV 在屏幕上查找一些图像并将其返回到坐标列表中,因此 pywinauto 单击它们,因此每次找到图像时都会给出如下列表:

[(297, 323), (390, 323), (297, 370), (437, 393), (314, 349), (408, 349)]

例如我想去掉(297, 323)(390, 323),怎么可能?

我一直在寻找几个小时,但我的英语并不完美,所以我总是找到错误的答案:(

【问题讨论】:

    标签: python list pywinauto coords


    【解决方案1】:

    如果你想删除所有的出现:

    a = [(297, 323), (390, 323), (297, 370), (437, 393), (314, 349), (408, 349)]
    b = [x for x in a if x != (297, 323) and x!= (390, 323)]
    print(b)
    

    如果你只是想删除第一次出现:

    a = [(297, 323), (390, 323), (297, 370), (437, 393), (314, 349), (408, 349)]
    a.remove((297, 323))
    a.remove((390, 323))
    print(a)
    

    【讨论】:

    • 非常感谢!所以如果我理解得很好,x!= 是来删除坐标的吗?编辑:还有a.remove() 给我这个错误:AttributeError: 'str' object has no attribute 'remove'
    • 不完全是-整行都在使用列表理解,您可以阅读更多here。它的作用是遍历旧列表,只添加满足条件的元素,因此不等于 (297, 323) 和 (390, 323) 的元素
    • 该错误表示您正在对字符串调用 remove 方法。此方法仅适用于列表@Clementinise
    • 我已经尝试在我的列表中使用 .replace() 并得到同样的错误,这就是为什么这个帖子存在。我真的很困惑为什么它说它是一个字符串,因为它是一个列表 x)但是使用 b = [x for x in a if x != (297, 323) and x!= (390, 323)] 工作所以我想我会很好,直到我发现问题:D
    猜你喜欢
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    相关资源
    最近更新 更多