【发布时间】:2013-11-21 21:39:42
【问题描述】:
给定一个列表,例如 [4, 5, 5, 1, 8, 3, 1, 6, 2, 7] 我希望能够在列表中找到第一个升序运行.. 我想返回列表的起始位置和持续时间。所以这个列表将返回位置 0 并且长度是 2 (4,5)
如果列表中没有升序,则返回 -1。
以下是我到目前为止的内容,但我似乎无法修复运行程序时出现的“列表索引超出范围”错误。我知道为什么会出现错误,但不确定如何解决。
import random
def generate_integer_list (num_integers, low_range, high_range):
assert num_integers > 0, "Value must be greater than 0"
assert low_range < high_range, "Value must be less than high_range"
x_range = range(num_integers) #Create a range for the below for-loop
l = [] #Create an empty list
#A for loop that goes on for the amount of integers the user wants and
#generates a number within the bounds, then adds that number to the list we created above
for _x in x_range:
r = random.randint(low_range, high_range)
l.append(r)
print (l)
length = len(l)
for x in range(length ):
t = l[x+1] - l[x]
if t == -1:
print (True)
else:
print (False)
generate_integer_list (5, 0, 10)
我要问的是,如何让这个函数找到第一次提升并返回位置以及长度
【问题讨论】:
-
您可能会发现
itertools模块和代码sublist == sorted(sublist)很有用。 -
如果您对
itertools解决方案感兴趣,here 组合运行模式可能会派上用场。
标签: python python-3.x