【发布时间】:2026-01-04 07:05:01
【问题描述】:
我设置了在某些方面具有可比性的对象,我想从集合中删除对象。我考虑了这个问题如何变化,对于元素之间的不同可比关系。我对搜索空间的开发、内存的使用以及问题的扩展方式很感兴趣。
- 第一种情况:在最简单的情况下关系将是双向的,因此我们可以删除这两个元素,只要我们可以确保通过删除元素不会删除其他“合作伙伴”。
- 第二种情况:可比关系不是双向的。仅删除有问题的元素,而不是与之可比较的元素。一个简化的场景是由整数组成的集合,可比较的操作是“可整除”
我可以执行以下操作,而不是删除元素:
a_set = set([4,2,3,7,9,16])
def compare(x, y):
if (x % y == 0) and not (x is y):
return True
return False
def list_solution():
out = set()
for x in a_set:
for y in a_set:
if compare(x,y):
out.add(x)
break
result = a_set-out
print(result)
当然,作为一名初级 Python 程序员,我的第一个问题是:
- 对此合适的集合理解是什么?
- 另外:我不能在不复制的情况下在迭代期间修改 Python 集的大小,对吧?
- 现在对于算法人员来说:如果一个元素的元素数量之间的关系可以比较增加,这个问题将如何改变。如果可比关系表示偏序,它会如何变化?
【问题讨论】:
标签: python algorithm set-comprehension