Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何引用列表中的下一项并将其与之前的项进行比较?_Python_Python 3.x_For Loop_If Statement - Fatal编程技术网

Python 如何引用列表中的下一项并将其与之前的项进行比较?

Python 如何引用列表中的下一项并将其与之前的项进行比较?,python,python-3.x,for-loop,if-statement,Python,Python 3.x,For Loop,If Statement,我有一个家庭作业问题,它要求做一个算法,遍历列表中的每个元素,看看旁边的数字是否大于当前数字。如果它不大于当前数字,则计数器将上升1,如果它更大,则计数器将保持在原来的位置。 我让它工作,但它只工作,如果有超过3项的清单 以下是我目前掌握的情况: def count(items): if len(items) == 0: return 0 else: count = 0 for i in items: count += 1 item

我有一个家庭作业问题,它要求做一个算法,遍历列表中的每个元素,看看旁边的数字是否大于当前数字。如果它不大于当前数字,则计数器将上升1,如果它更大,则计数器将保持在原来的位置。 我让它工作,但它只工作,如果有超过3项的清单

以下是我目前掌握的情况:

def count(items):

if len(items) == 0:
    return 0



else:
    count = 0
    for i in items:
        count += 1
        items1 = items[i:]
        items2 = items[i+1:]

        if items1 > items2:
            return count - 1



print (count([42, 7, 12, 9, 2, 5])) #returns 4. works but does not work if len < 3
print (count([])) #returns 0. works
print (count(list(range(10**7))))  # supposed to print out 1 since it's only 1 number, but it just gets stuck and doesn't finish the rest of the program
print (count([99])) # prints out none  
print (count(list(range(10**7,0,-1))))# supposed to print out 10000000 but prints 1 instead 
def计数(项目):
如果len(项目)==0:
返回0
其他:
计数=0
对于项目中的i:
计数+=1
项目1=项目[i:]
项目2=项目[i+1:]
如果项目1>项目2:
返回计数-1
打印(计数([42,7,12,9,2,5])#返回4。len<3时工作,但不工作
打印(计数([])#返回0。作品
打印(计数(列表(范围(10**7)))#应该打印出1,因为它只有1个数字,但它只是卡住了,无法完成程序的其余部分
打印(计数([99])#不打印
打印(计数(列表(范围(10**7,0,-1)))#本应打印10000000,但打印1

任何形式的帮助或建议都将不胜感激。

如果您有0或1个元素,请返回0。 您必须遍历数组的长度,而不是元素本身。这两者之间有区别:
用于数组中的i
用于范围内的i(0,len(数组))

小心使用
范围
——打开控制台并键入python。检查打印的
范围(10**2)
。这不是一个因素。

一般情况下
def计数下一次测试(数字,测试fn):
计数=0
last=len(数字)-1
对于枚举中的i,n(数字):
如果我是最后一个:
如果测试fn(n,数字[i+1]):
计数+=1
返回计数
在您的情况下:计数下一个测试(数字,λa,b:a 你也可以这样做

pairs = zip(numbers, numbers[1:])
len([(a,b) for a,b in pairs if a < b])
pairs=zip(数字,数字[1:])
len([(a,b)表示a,b表示a
算法语句是奇数。什么是“当前编号”,计数还是当前元素?假设当前的数字,那么第一个答案将是2,因为12>7,5>2。
In general

def count_next_test(numbers, test_fn):
  count = 0
  last = len(numbers) - 1
  for i, n in enumerate(numbers):
    if i < last:
      if test_fn(n, numbers[i+1]):
        count += 1
  return count
pairs = zip(numbers, numbers[1:])
len([(a,b) for a,b in pairs if a < b])