📌  相关文章
📜  Python|检查列表是否严格增加

📅  最后修改于: 2022-05-13 01:54:36.960000             🧑  作者: Mango

Python|检查列表是否严格增加

单调序列测试是一种实用程序,在数学中具有多种应用,因此在与数学相关的每个领域中都有应用。由于数学和计算机科学通常是并行的,因此数学运算(例如检查严格递增的序列)对于收集知识很有用。同样的论点也可以扩展到严格递减的列表。让我们讨论执行此测试的某些方法。

方法#1:使用all() + zip()
all()通常检查提供给它的所有元素。 zip() 的任务是从头开始链接列表和从第一个元素开始的列表,以便可以对所有元素执行检查。

# Python3 code to demonstrate 
# to check for strictly increasing list
# using zip() + all()
  
# initializing list
test_list = [1, 4, 5, 7, 8, 10]
  
# printing original lists
print ("Original list : " + str(test_list))
  
# using zip() + all()
# to check for strictly increasing list
res = all(i < j for i, j in zip(test_list, test_list[1:]))
  
# printing result
print ("Is list strictly increasing ? : " + str(res))
输出:
Original list : [1, 4, 5, 7, 8, 10]
Is list strictly increasing ? : True


方法 #2:使用reduce() + lambda
与 lambda 结合的reduce()也可以执行检查单调性的任务。 reduce函数用于将结果累积为 True 或 False,lambda函数检查每个索引值与下一个索引值。

# Python3 code to demonstrate 
# to check for strictly increasing list
# using reduce() + lambda
  
# initializing list
test_list = [1, 4, 5, 7, 8, 10]
  
# printing original lists
print ("Original list : " + str(test_list))
  
# using reduce() + lambda
# to check for strictly increasing list
res = bool(lambda test_list: reduce(lambda i, j: j if 
                 i < j else 9999, test_list) != 9999)
  
# printing result
print ("Is list strictly increasing ? : " + str(res))
输出:
Original list : [1, 4, 5, 7, 8, 10]
Is list strictly increasing ? : True


方法#3:使用itertools.starmap() + zip() + all()
执行此任务的另一种方法, starmap()用于将操作与方法 1 中所做的压缩列表绑定,并且all()也执行类似的结果累积任务。

# Python3 code to demonstrate 
# to check for strictly increasing list
# using itertools.starmap() + zip() + all()
import operator
import itertools
  
# initializing list
test_list = [1, 4, 5, 7, 8, 10]
  
# printing original lists
print ("Original list : " + str(test_list))
  
# using itertools.starmap() + zip() + all()
# to check for strictly increasing list
res = all(itertools.starmap(operator.le, 
         zip(test_list, test_list[1:])))
  
# printing result
print ("Is list strictly increasing ? : " + str(res))
输出:
Original list : [1, 4, 5, 7, 8, 10]
Is list strictly increasing ? : True