2014-03-19 122 views
2

我有一個列表,想比較,如果最後的值比過去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" 

任何建議將不勝感激!

回答

8

一種方法是取最大值過去值,並將其與去年比較:

>>> l = [1,2,3,4,5,6,7,8,9,10] 
>>> if l[-1] > max(l[:-1]): 
...  print "It's bigger" 
... 
It's bigger 
+0

如果您的列表中有超過10個值,你只需要與它之前的最後一個值10進行比較的最佳方式,你可以做'max(l [-11:-1])'。 –

4

我們通過除了最後一個元素的列表迭代,我們檢查,如果所有這些元素都比上次更小元件。

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)) 
+0

請注意,如果OP有一個大的列表,那麼你應該使用'islice'而不是正常的切片。 –

+0

@Aशwinचचhaudhary謝謝男人:)更新了答案。 – thefourtheye

+0

我已經upvoted。 :P –