我有两个python类'tuple'和,我想比较这两个类的内容,并仅获取仅在'deactivated' tuple中的内容,例如,
deactivated = ((34, 'abcd'), (250, 'def'), (350, 'xyz'))
schedules = ((34, 'abcd'), (250, 'def'))
to_deactivate = ()
在这里,我想把不在调度表中的(350, 'xyz')
推到另一个变量to_deactivate
中。
我在网上查过一些解决方案,但大多数都只是比较元组是否相同。请帮助我解决这个问题。
3条答案
按热度按时间ubbxdtey1#
请尝试:
印刷品:
k5ifujac2#
你确定那些变量应该是元组吗?
因为元组是不可变的。从本质上讲,你不应该在元组中添加或删除内容。看起来这些变量是用来添加或删除内容的集合。这对元组来说是不可能的。
例如,集合,因为你似乎不关心顺序,但似乎对什么是或不是它们感兴趣。这就是
sets
的作用。非常快速地检查是否有东西在其中(用同样简单的in
操作符。但in
对于列表或元组是O(n),而对于集合是O(log(n)),在实践中甚至是O(1))。所以,这只是一个评论,但我觉得这些变量应该是集合。在这种情况下,你的问题的答案应该是
即使您坚持将它们保留为元组,一个简洁的答案仍然是使用集合
请注意,这比复合元组解决方案要快。(1.38 μs对我的计算机上的1.59 μs。并且当输入元组的大小增加时,时间差也会增加)
vohkndzv3#
您可以使用迭代将一个元组中的每个元素与另一个元组中的每个元素进行比较,并获取仅在第一个元组中存在值的索引的值
这样应该没问题。
编辑:仅迭代一次。