含义“如果每个项目在具有相同索引的其他项目的范围内”。Python - 如果数组在其他数组的范围内
price = [1, 2]
budget = [5, 7]
这工作:
if price[0] in range(budget[0]) and price[1] in range(budget[1]):
affordable = True
我想,有一些方法,只是引用整个数组,虽然。像这样:if price in budget:
含义“如果每个项目在具有相同索引的其他项目的范围内”。Python - 如果数组在其他数组的范围内
price = [1, 2]
budget = [5, 7]
这工作:
if price[0] in range(budget[0]) and price[1] in range(budget[1]):
affordable = True
我想,有一些方法,只是引用整个数组,虽然。像这样:if price in budget:
你可以使用:
if all(x in range(y) for x,y in zip(price,budget)):
affordable = True
这将创建price[i],budget[i]
元组,然后每个元组,我们检查price[i]
是range(budget[i])
。不过,你可以进一步优化这:
if all(0 <= x < y for x,y in zip(price,budget)):
affordable = True
注意,这使得假设price
s为所有整数。如果您使用x in range(y)
,则它将失败,如果x
不是整数。所以0.7 in range(10)
会失败,而我们的第二种方法会成功(但它取决于你想要什么)。
如果预算不是一个整数,则使用范围也会失败 –
'0 <= x <= y'(或类似的)而不是范围内的x(y)'将处理浮点数而不编译(并且迭代; PY2)一个'list' – schwobaseggl
这样做,谢谢:)我只记得在我的情况下我真正需要的是检查两者中的一个,而不是两者,下面是在这种情况下如何执行:'如果有(x不在范围内(y)for x,y in zip(price,budget)):' – JackHasaKeyboard
假设价格和预算都必须是非负数,使用in range
似乎是过度复杂的事情。相反,您可以使用<
运算符。
不管你是否使用<
或in range
,这似乎是最简单的方法是zip
两个列表和应用条件上对:
if (all([x[0] >= x[1] for x in zip(budget, price)])):
affordable = True
究竟你是什么意思,“范围内”?什么是单个项目的范围?什么决定价格是否“在预算内”? –
你可以使用['all'](https://docs.python.org/3/library/functions.html#all);例如(如果所有(价格[我]在范围内(预算[i])在范围内(...))或全部(p在范围内(b)为p,b在zip(价格,预算))'如果这就是你真正想要的。 – khelwood