如何更改以下内容:
if key == (2, *) and (1, 1) in previous:
转成 1 到 50 之间的*
任意数字(包括 1 到 50)
我已经尝试了以下但它没有工作......
if key == (2, range(1, 50)) and (1, 1) in previous:
还有其他想法吗?
如何更改以下内容:
if key == (2, *) and (1, 1) in previous:
转成 1 到 50 之间的*
任意数字(包括 1 到 50)
我已经尝试了以下但它没有工作......
if key == (2, range(1, 50)) and (1, 1) in previous:
还有其他想法吗?
如果 a) iterableprevious
包含等于 的元组(1,1)
,并且 b) 元组key
等于(2,1)
, (2,2)
, ...中的任何一个,则以下情况为真(2,50)
。
if key in ((2,i) for i in range(1,51)) and (1,1) in previous:
如果范围内的元素数量非常大(1000 或 100,000),您可能更喜欢:
if len(key)==2 and key[0]==2 and 1 <= key[1] <= 50 and (1,1) in previous:
按元素比较:
if (key[0] == 2) and (1 <= key[1] <= 50) and ((1, 1) in previous):
或者,没有之间的比较:
if (key[0] == 2 and key[1] >= 1 and key[1] <= 50) and ((1,1) in previous):
创建一个__eq__
执行检查的自定义对象:
class AnyOf(object):
def __init__(self, valid):
self.valid = set(valid)
def __eq__(self, other):
return other in self.valid
between_1_and_50 = AnyOf(xrange(1, 51))
if key == (2, between_1_and_50):
# do something...
如果需要,您还可以扩展它functools.total_ordering
以支持更大范围的比较。