遍历列表的长度

时间:2019-06-27 16:42:50

标签: python

给出一个数字列表,如果数组在3旁边包含3,则返回True ...我该如何解决? 我尝试使用范围功能,但似乎不起作用.. 例如

def myfunc(mylist):
     for i in range(0, len(mylist) - 1):
         return mylist[1] == 3 and mylist[i + 1] == 3

myfunc([4, 3, 3])
returns false

我有点困惑  如何遍历索引计数

def myfunc(mylist):
     for i in range(0, len(mylist) - 1):
         return mylist[1] == 3 and mylist[i + 1] == 3

myfunc([4, 3, 3])
returns false

expected result = True
actual output = False

3 个答案:

答案 0 :(得分:2)

return mylist[i] == 3 and mylist[i + 1] == 3

总是在只检查一次后返回。而是使用

if mylist[i] == 3 and mylist[i + 1] == 3: return True

答案 1 :(得分:2)

使用zip,您可以将列表与自身进行比较:

>>> l_true=[1,2,3,4,5,3,3,5,6,7,5,4]
>>> any( x==y==3 for x,y in zip( l_true, l_true[1:] ) )
True
>>> l_false=[1,2,3,4,5,3,1,5,6,7,5,4]
>>> any( x==y==3 for x,y in zip( l_false, l_false[1:] ) )
False

说明:

zip在每个列表中一次占用一个元素,您可以将列表与实例之一切换到一个位置的自身进行比较:

[1,2,3,4,5,3,3,5,6,7,5,4]
[2,3,4,5,3,3,5,6,7,5,4]  #<-  switched list
           ^
           |
            - here !

也许它是一种更具可读性的方法,但是zipany是Python函数。

答案 2 :(得分:0)

def myfunc(mylist):
     for i in range(0, len(mylist) - 2):
         if myList[i] == 3 and myList[i] == myList[i+1]: 
             return True
    return False