2013-10-28 49 views
0

我正在帮助完成这项任务。这是一个简单的问题,但它要求使用index()函数和slice函数。我对如何做到这一点感到不知所措。我不确定为什么需要这两个功能来做这样的事情。这样说,任何人都可以分享一些这方面的知识吗?查找列表元素是否出现2次?

+0

你_have_使用'index'和'slice'? – iCodez

+0

@icodez对于这个问题,是的,我这样做。我想这是一个学习的东西。 – blutuu

+0

哦,好的。我打算说为什么不使用'.count'。 – iCodez

回答

0

如果你绝对必须使用index和切片,你可以写

def occurs_twice(lst, elem): 
    try: 
     i1 = lst.index(elem) 
    except ValueError: 
     return False 

    try: 
     i2 = lst[i1+1:].index(elem) 
    except ValueError: 
     return False 

    return True 

print occurs_twice([1, 2, 3, 4, 6, 7, 8, 9, 5, 5], 5) 
+0

我认为他的意思是“切片”功能,就像内置的一样。 – iCodez

+0

呃,我想你可以写''lst [slice(i1 + 1)]''而不是''lst [i1 + 1:]'',但它本质上是一回事。 – fjarri

+0

我知道。我只是在质疑他的老师是否会为此而死。 – iCodez

1
>>> L = [1, 2, 3, 4, 6, 7, 8, 9, 5, 5] 
>>> any(item in L[L.index(item)+1:] for item in L) 
True 
>>> L = [1, 2, 3, 4, 6, 7, 8, 9, 5] 
>>> any(item in L[L.index(item)+1:] for item in L) 
False 

如果你真的需要使用slice功能,而不是仅仅切片

>>> any(item in L[slice(L.index(item)+1, None)] for item in L) 
相关问题