我想检查数字列表是否单调(递增/递减),并返回布尔值列表。 我 不允许 使用高级工具,例如: all , zip , np ,等等...但是我可以使用循环。
我认为我的代码无法正常工作,因为i + 1
在列表末尾超出范围。
我该怎么办?我应该使用哪个索引?如何确定条件适用于每个i
?
for i in range(len(num_list)):
if (num_list[i] <= num_list[i+1]): # strictly
y = True
else:
y = False
if (num_list[i] >= num_list[i+1]): # decreasing
z = True
else:
z = False
list = [y,z]
答案 0 :(得分:1)
我尝试仅在必要时更改您的功能机制:
responseStorage
测试:
def my_func(num_list):
# 1-element list needs separate treatment
if len(num_list)==1:
return [True, True]
# here you should init y and z
# at the beginning you assume num_list is non-decreasing
y = True
# at the beginning you assume num_list is non-increasing
z = True
# now you check for all but the last element whether y and z maintain
for i in range(len(num_list)-1):
# verify need to change y
# is num_list indeed non-decreasing?
if (num_list[i] <= num_list[i+1]):
pass
else:
y = False
# verify need to change z
# is num_list indeed non-increasing?
if (num_list[i] >= num_list[i+1]):
pass
else:
z = False
return [y,z]
答案 1 :(得分:0)
欢迎来到SO社区。 p>
一种找出数字是递增还是递减的方法是找出相邻数字之间的差异,这是一种找到数字差异的粗略方法。这是我的代码,它找到列表中数字之间的差异,然后找出数字是增加还是减少。
myList=[1,2,3,8,17,29,30]
diffList=[]
increasingValue=False
for i in range(len(myList)-1):
diffList.append(myList[i]-myList[i+1])
#print(diffList)
upDirection=True
directionSwitch=False
if(diffList[0]<0):
upDirection=False
for item in diffList:
if(item<0 and upDirection==True):
directionSwitch=True
if(item>0 and upDirection==False):
directionSwitch=True
if(directionSwitch):
print("Non Monotonic")