看不懂这段代码在干什么,求解[face]emoji:029.png[/face]

看不懂这段代码在干什么,求解[face]emoji:029.png[/face]

你这个是查找给定序列的最长递增子序列的吧,如果number大于end-start,返回空;否则先进行range(start,end)举个例子

range(1,10):指定start=1,end=10,默认step=1,生成可迭代对象,包含[1, 2, 3, 4, 5, 6, 7, 8, 9]

然后

返回sample(range(start,end),number)

sample(序列a,n)

功能:从序列a中随机抽取n个元素,并将n个元素以list形式返回。

def subAscendingList(lst):

'''返回最长递增子序列'''

for length in range(len(lst), 0, -1):

#按长度递减的顺序进行查找和判断

for sub in combinations(lst, length):

#判断当前选择的子序列是否为递增顺序

if list(sub) == sorted(sub):

#找到第一个就返回

return sub

def getList(start=0, end=1000, number=20):

'''生成随机序列'''

if number > end-start:

return None

return sample(range(start, end), number)

 

写出来执行下就知道了

这段代码是一个生成随机序列的函数getList

1、传入范围起点start 范围终点end 以及序列长度

2、如果传入的长度大于范围,比如你给的范围是50-100,却传入了number 51,那么超出了范围,就返回空值

3、调用随机函数sample,传入范围和长度,返回一个无重复的随机序列

相关文档:https://docs.python.org/zh-cn/3.7/library/random.html  参考其中random.sample部分

 

如有帮助请采纳🤣谢谢