含義「如果每個項目在具有相同索引的其他項目的範圍內」。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