错误的“如果输入”语句行为? [关闭]

问题描述 投票:-2回答:1

我有一组对象,它们的属性为“ coords”(两个整数的元组)和一个返回该元组的方法。另外,我还有一个元组坐标列表。我想将可在列表中找到其coords属性的对象添加到新列表中。

首先,我用一个简单的理解就尝试了这个:

coords_list = [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]
objects_with_matching_coords = [i for i in objects if i.get_coords() in coords_list]

但是似乎get_coords不满足in条件,即使它确实确实返回了两个整数的元组,就像在coords_list中一样。结果列表为空。

我尝试将其重写为for循环:

objects_with_matching_coords = []
for obj in objects:
    if obj.get_coords() in coords_list :
        objects_with_matching_coords.append(obj)
    else:
        continue

相同的结果,objects_with_matching_coords为空。in不会将列表中的元组视为项目吗?这是怎么回事?

python list if-statement tuples python-3.7
1个回答
0
投票

您正在将obj与obj比较,您应该比较元组中的元素。请参考示例link

© www.soinside.com 2019 - 2024. All rights reserved.