【问题标题】:Compare list elements in python比较python中的列表元素
【发布时间】:2014-03-19 01:52:49
【问题描述】:

我有一个列表,想比较最后一个值是否大于过去的 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"

任何建议将不胜感激!

【问题讨论】:

    标签: python list compare elements


    【解决方案1】:

    一种方法是取过去值中的最大值并将其与最后一个值进行比较:

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

    【讨论】:

    • 如果您的列表有超过 10 个值,并且您只想与最后一个值之前的 10 个进行比较,您可以使用max(l[-11:-1])
    【解决方案2】:

    我们遍历除了最后一个元素之外的列表,并检查所有这些元素是否都小于最后一个元素。

    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 在 cmets 中指出的那样,这是执行此操作的最佳方式

    from itertools import islice
    print all(num < my_list[-1] for num in islice(my_list, len(my_list) - 1))
    

    【讨论】:

    • 请注意,如果 OP 的列表很大,那么您应该使用islice 而不是普通切片。
    猜你喜欢
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多