Python - 如果数组在其他数组的范围内

时间:2017-02-20 09:35:10

标签: python arrays key range contains

含义“如果每个项目都在具有相同索引的其他项目的范围内”。

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:

2 个答案:

答案 0 :(得分:5)

您可以使用:

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)会失败,而我们的第二种方法会成功(但它当然取决于你想要的东西)。

答案 1 :(得分:2)

假设价格和预算都必须是非负数,使用in range似乎过于复杂。相反,您可以使用<运算符。

无论您使用的是<还是in range,似乎最简单的方法都是zip这两个列表并在对上应用条件:

if (all([x[0] >= x[1] for x in zip(budget, price)])):
    affordable = True