2024-04-24 14:13:09 发布
网友
假设我们有以下集合S,值v:
S
v
S = {(0,1),(2,3),(4,5)} v = 3
我想测试v是否是集合中任何一对的第二个元素。我目前的做法是:
我真的不喜欢这样,因为我必须把它放在一个单独的函数中,有东西告诉我可能有更好的方法来实现它。谁能给我点启示吗?在
any函数是为此量身定做的:
any
any( y == v for (_, y) in S )
如果您有一个不经常更改的大集合,您可能需要将y值投影到一个集合上。在
当然,只有在S更改后计算yy一次,而不是在每个成员资格测试之前,这样做才有好处。在
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
any
函数是为此量身定做的:如果您有一个不经常更改的大集合,您可能需要将y值投影到一个集合上。在
^{pr2}$当然,只有在
S
更改后计算yy
一次,而不是在每个成员资格测试之前,这样做才有好处。在你不能做O(1)查找,所以你不能从一个集合中得到太多的好处。你可以考虑建立第二个集合,特别是如果你要做大量的查找。在
微不足道的答案是^{} (见马塞洛的答案)。在
备选方案是^{} 。在
相关问题 更多 >
编程相关推荐