2014-02-14 1 views
1

Я запутался в правильном способе сделать это в python .... Так что, если я хочу перебирать список с помощью цикла for и проверять, есть ли каждый элемент из списка «а» находится в одном из 2-х или более других списков, но я, кажется, не понимают, как это сделать ... вот некоторые основные код, что я имею в виду:Python Операторы IN и OR с циклом for в списке

>>> a 
[1, 2, 3, 4, 5] 
>>> even 
[2, 4] 
>>> odd 
[1, 3] 
>>> for i in a: 
...  if i in even or odd: 
...    print(i) 
... 
1 
2 
3 
4 
5 

Почему этот код печать 5, поскольку 5 не входит в четный список или нечетный список? Также, как это сделать, чтобы я мог перебирать один список и проверять, есть ли в каждом элементе ATLEAST один из некоторых других списков?

ответ

5

Проблема здесь: i in even or odd

Это обрабатывается как например:

(i in even) or (odd).

Python бесполезно пытается преобразовать список odd в логическое значение (в данном случае Truebecause the list is not empty).

Попробуйте i in even or i in odd, который правильно проверяет, присутствует ли i в even или odd.

3

Вы должны использовать in дважды:

if i in even or i in odd: 

i in even будет проверять, если i в even. i in odd проверит, i находится в odd.


В противном случае, ваш код будет оцениваться следующим образом:

if (i in even) or (odd): 

Кроме того, условие Условного оператора всегда будет вычисляться True, потому что odd не является пустым списком (который всегда оценивать до True в Python).


Наконец, вы должны помнить, что, несмотря на то, что его синтаксис несколько похож, Python является не английский. :)