2013-11-27 3 views
2

Есть 2 спискаПроверьте, существует ли элемент в списке в другом списке или нет Python

a= [1,2,3] 
b = [1,2,3] 

Теперь я хочу, чтобы проверить, существует ли элемент из a в b или нет в питона один-лайнер ,

Я могу использовать loop on a, а затем проверить, существует ли он в b или нет. Но я хочу что-то питоническое (однострочное).

+0

Один лайнер не всегда означает, что это вещий. –

+0

Что относительно 'any (a) in b' –

+0

Согласен. Но я знаю, что могу преобразовать его в однострочный в python, а не использовать циклы. – PythonEnthusiast

ответ

2

bool(set(a)&set(b)) преобразует a и b в наборы, а затем применяет intersection operator (&) на них. Затем на результирующем наборе применяется bool, который возвращает False, если набор пуст (элемент не является общим), в противном случае True (набор не пуст и имеет общий элемент (ы)).

Без использования комплектов: any(True for x in a if x in b). any() возвращает значение True, если какой-либо из элементов является истинным, иначе False.

+0

Что он делает? Пожалуйста, объясни. – PythonEnthusiast

+0

@ user1162512 Обновлено; Я видел ваш комментарий, когда добавлял информацию об этом. –

+0

Я хочу получить этот элемент из 'a', который существует в' b'. Как я могу это сделать? – PythonEnthusiast

2

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

def check_element(a, b): 
    return not set(a).isdisjoint(b) 
0
len(set(a+b)) < len(set(a)) + len(set(b)) 
Смежные вопросы