2016-09-27 2 views
0

Я использую следующий код, чтобы проверить, если все элементы в списке одинаковы:питона: проверить, если все элементы одинаковы в списке

def sameItem(myList): 
    return all(x==myList[0] for x in myList) 

Однако, в моем тесте:

myL1 = ['dog','cat','dog'] 
sameItem(myL1) 

возвращение True. Разве это не ложь? Или у меня есть ошибка в функции sameItem()?

Кроме того, я использую Jupyter Notebook, может ли это вызвать любую проблему в этом сценарии?

Спасибо!

+0

Да. первый элемент - «собака», а второй элемент «кот» не равен «собаке». Разве он не должен возвращать ложь? – Edamame

+0

Не воспроизводить. Он возвращает False для меня – Li357

+0

ли вы используете python 2.7? – Edamame

ответ

1

Ваш метод должен быть правильным и работает для меня. В качестве альтернативы вы можете попробовать этот метод для двойной проверки, которая является одной линией, которая делает то же самое.

return myList[1:] == myList[:-1] 
+0

Это работает для меня. Могу я спросить, что это значит? Спасибо – Edamame

+0

'myList [1:]' возвращает список всех элементов в списке, кроме первого. 'myList [: - 1]' возвращает список всех элементов в списке, кроме последнего. Вы можете попробовать его в интерпретаторе python, чтобы почувствовать индексацию. Если это сработает, не могли бы вы пометить ответ как правильный? Таким образом, будет известно, что проблема решена. Благодаря! – user3543300

Смежные вопросы