Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.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_List Comprehension - Fatal编程技术网

Python 列表中的递增计数器

Python 列表中的递增计数器,python,list-comprehension,Python,List Comprehension,我写了一个函数,它将列出一个列表中所有非连续整数及其索引,它可以工作,但我想知道是否有可能将它变成一个线性。我的原始代码如下所示: def all_non_consecutive(arr): result = [] i = 1 for num in arr[1:]: if arr[i-1] != num -1: result.append({'i': arr.index(num), 'n': num}) i += 1 return r

我写了一个函数,它将列出一个列表中所有非连续整数及其索引,它可以工作,但我想知道是否有可能将它变成一个线性。我的原始代码如下所示:

def all_non_consecutive(arr):
  result = []
  i = 1
  for num in arr[1:]:
      if arr[i-1] != num -1:
          result.append({'i': arr.index(num), 'n':  num})
      i += 1
  return result
我想说的是:

def all_non_consecutive(arr):
  result = []
  i= 1
  return [{'i': arr.index(num), 'n':  num} for num in arr[1:] if num - 1 != arr[i-1]]

但是正如您所看到的,没有任何增量i,因此代码无法工作。有没有办法使列表理解在变量之外递增?

您可以在范围(1,len(arr))上迭代,而不是直接在列表上迭代

def all_non_continuence1(arr):
结果=[]
i=1
对于范围(1,len(arr))中的i:
如果arr[i-1]!=arr[i]-1:
append({'i':i,'n':arr[i]})
返回结果
作为列表理解

定义所有非连续2(arr):
如果arr[i-1]!=arr[i]-1,则为范围(1,len(arr))内的i返回[{'i':i,'n':arr[i]}

如果列表中包含一些重复的元素,您的第一个解决方案可能无法按预期工作。至于列表理解,你不可能在外部增加一个变量。@Austin听起来像你没有得到。@superbrain你在这里到底会怎么使用它?@Tomerikoo我不会。但是您可以将
arr[i-1]]
替换为
arr[(i:=i+1)-2]
@superbrain,在我的代码中将arr[i-1]替换为arr[(i:=i+1)-2]会导致语法错误这些解决方案都不起作用,它们只是返回。对于列表[1,2,3,4,6,7,8,10],这两个gi都给出了相同的结果。返回结果如下:[{'i':0,'n':1},{'i':1,'n':2},{'i':2,'n':3},{'i':3,'n':4},{'i':4,'n':6},{'i':5,'n':7},{'i':6,'n':8},{'i':7,'n':10}]@JanKowalski我误解了你的问题,现在应该没问题了。如果是现在,请说明预期结果。