我有一个列表,想要比较最后一个值是否大于过去的10个值,但是,我知道有一个更简单的方法来处理下面的代码:
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"
任何建议都将不胜感激!
答案 0 :(得分: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
答案 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]
中排除列表中的最后一个元素。
注意:此方法的优点是,它在发现故障后立即发生短路。因此,我们 始终不必处理整个列表 。在最好的情况下,它在处理第一个元素后返回。如果正在处理的列表非常大,这非常有用。
正如Ashwini Chaudhary在评论中指出的那样,这是实现这一目标的最佳方式from itertools import islice
print all(num < my_list[-1] for num in islice(my_list, len(my_list) - 1))