测试元组集合中的值

2024-04-24 14:13:09 发布

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

假设我们有以下集合S,值v

S = {(0,1),(2,3),(4,5)}
v = 3

我想测试v是否是集合中任何一对的第二个元素。我目前的做法是:

^{pr2}$

我真的不喜欢这样,因为我必须把它放在一个单独的函数中,有东西告诉我可能有更好的方法来实现它。谁能给我点启示吗?在


Tags: 方法函数元素pr2
3条回答

any函数是为此量身定做的:

any( y == v for (_, y) in S )

如果您有一个不经常更改的大集合,您可能需要将y值投影到一个集合上。在

^{pr2}$

当然,只有在S更改后计算yy一次,而不是在每个成员资格测试之前,这样做才有好处。在

你不能做O(1)查找,所以你不能从一个集合中得到太多的好处。你可以考虑建立第二个集合,特别是如果你要做大量的查找。在

S = {(0,1), (2,3), (4,5)}
T = {x[1] for x in S}

v = 3
if v in T:
    # do something

微不足道的答案是^{}(见马塞洛的答案)。在

备选方案是^{}。在

>>> zip(*S)
[(4, 0, 2), (5, 1, 3)]
>>> v in zip(*S)[1]
True

相关问题 更多 >