python列表序列号

时间:2014-11-26 14:51:45

标签: python list sequential

我试图找出一种方法来查找列表中的所有整数是否按顺序递增。如果任何数字是非顺序的,我想得到索引。

mylist = [1,2,3,2]

所以,2比1(是),3比2(是),2比3(不,得索引)。

我可以将未排序的列表与排序列表进行比较,以确定它是否是顺序的,但我还想建立索引。有没有办法做到这一点?

由于 托比

3 个答案:

答案 0 :(得分:1)

您可以使用enumerate为您执行此操作:

In [1]: mylist = [1,2,3,2]

In [2]: for idx, element in enumerate(mylist):
   ...:     if idx+1 != element:
   ...:         print element, idx
   ...:         
2 3

如果你的序列可以从任何数字开始,

In [1]: mylist = [2,3,4,2,7]

In [2]: for idx, element in enumerate(mylist):
   ....:    if idx + mylist[0] != element:
   ....:           print element, idx
   ....:         
2 3
7 4

答案 1 :(得分:1)

这应该可以解决问题:

def nonincr_index(l):
    if not l:
        return 0
    prev=l[0]
    for n,i in enumerate(l):
        if i<prev:
            return n
        prev=i
    return len(l)

>>> nonincr_index([1,2,3,2])
3

返回非增加项的索引。

答案 2 :(得分:1)

我猜你正在寻找这样的东西:

>>> mylist = [1,2,3,2,3,5,6,3,7,8,6]
>>> [i+1 for i in range(len(mylist)-1) if mylist[i]>mylist[i+1]]
[3, 7, 10]