給定一個列表,[4,5,5,1,8,3,1,6,2,7]我希望能夠找到第一個升序在列表中運行..我想返回列表的起始位置以及它持續的時間。因此,此列表將返回位置0並且長度爲2(4,5)嘗試查找列表中的第一個升序運行Python
如果列表中沒有升序運行,則返回-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'模塊和代碼'子列表==排序(子表)'很有用。 – rlms
如果你對'itertools'解決方案感興趣,那麼這個模式[here](http://stackoverflow.com/questions/15276156/python-return-lists-of-continuous-integers-from-list)到組運行一起可能派上用場。 – DSM