给出一个数字列表,如果数组在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
答案 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 !
也许它是一种更具可读性的方法,但是zip
和any
是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