Как уменьшить несколько условий со строками - Python - PullRequest
1 голос
/ 13 марта 2019

Как я могу уменьшить это условие?

item всегда является строкой

for item in list_of_items:
    if ('beans' in item or 'apple' in item or 'eggs' in item or 'banana' in item) and ('elephant' not in item) or 'chicken' not in item:
                print(item)

Я имею в виду, могу ли я как-нибудь дать список слов, чтобы проверить каждую возможность?

Ответы [ 3 ]

3 голосов
/ 13 марта 2019

Вы можете использовать any с генератором или списком:

if any(word in item for word in ['apple', 'beans', 'eggs', 'banana', 'elephant', 'chicken')):
1 голос
/ 13 марта 2019

Вы можете использовать any для первой части.

Однако вторая часть не может быть уменьшена

if any(w in item for w in ('beans', 'apple', 'eggs', 'banana')) and ('elephant' not in item) or 'chicken' not in item:

Не полезно для вашего случая, но вы должны знать, что все также полезно.

Вы можете уменьшить это if 'a' not in item and 'b' not in item до if all(w not in item for w in ('a', 'b')

1 голос
/ 13 марта 2019

Использование list-comprehension:

good_items = ['beans','apple','eggs','banana', 'elephant', 'chicken']
list_of_items = ['apple', 'grapes', 'elephant', 'chicken']

print([x for x in list_of_items if x in good_items and x not in ['elephant', 'chicken']])

ВЫХОД :

['apple']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...