我有一個列表,想比較,如果最後的值比過去10個值越大,不過,我知道有一個更容易接近這一然後下面的代碼方式:比較列表中的元素在python
list = [1,2,3,4,5,6,7,8,9,10]
if list[-1] > list[-2] and list[-1] > list[-3] and list[-1] > list[-4]: (etc)
print "It's bigger"
任何建議將不勝感激!
我有一個列表,想比較,如果最後的值比過去10個值越大,不過,我知道有一個更容易接近這一然後下面的代碼方式:比較列表中的元素在python
list = [1,2,3,4,5,6,7,8,9,10]
if list[-1] > list[-2] and list[-1] > list[-3] and list[-1] > list[-4]: (etc)
print "It's bigger"
任何建議將不勝感激!
一種方法是取最大值過去值,並將其與去年比較:
>>> l = [1,2,3,4,5,6,7,8,9,10]
>>> if l[-1] > max(l[:-1]):
... print "It's bigger"
...
It's bigger
我們通過除了最後一個元素的列表迭代,我們檢查,如果所有這些元素都比上次更小元件。
print all(num < my_list[-1] for num in my_list[:-1])
在Python中,可以使用負向索引訪問最後一個元素。所以my_list[-1]
指的是最後一個元素,並my_list[-2]
指的是倒數第二個,等
此外,我們使用slicing notation從列表中排除最後的元素,與my_list[:-1]
。
注:該方法的優點是,它發現故障後立即短路。所以,我們不必總是處理整個列表。在最好的情況下,它在處理第一個元素之後返回。如果正在處理的列表非常大,這非常有用。
由於阿什維尼·喬杜裏在評論中指出,這是要做到這一點
from itertools import islice
print all(num < my_list[-1] for num in islice(my_list, len(my_list) - 1))
請注意,如果OP有一個大的列表,那麼你應該使用'islice'而不是正常的切片。 –
@Aशwinचचhaudhary謝謝男人:)更新了答案。 – thefourtheye
我已經upvoted。 :P –
如果您的列表中有超過10個值,你只需要與它之前的最後一個值10進行比較的最佳方式,你可以做'max(l [-11:-1])'。 –