2016-07-23 3 views
0

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

In [5]: L = ["John and Mary", "Leslie", "Iva and Mark Li"] 

Я надеюсь распечатать каждую из строк в L, который имеет в нем and -

'John and Mary', 'Iva and Mark Li' 

У меня есть следующий код:

In [6]: def grep(pattern, line): 
      if pattern in line: 
       print line 

In [7]: [grep("and", I) for I in L] 

Это возвращает

John and Mary 
Iva and Mark Li 
Out[7]: [None, None, None] 

Каков правильный способ сделать это? Спасибо!!

+0

[If/else list comprehensions in Python] (http://stackoverflow.com/questions/4260280/if-else-in-pythons-list-comprehension), вероятно, станет хорошей почтой для вас. – Skam

ответ

5

Должно быть прямолинейно:

>>> L = ["John and Mary", "Leslie", "Iva and Mark Li"] 
>>> for s in L: 
    if ' and ' in s: print(s) 


John and Mary 
Iva and Mark Li 

Если вы хотите, чтобы захватить строки в списке, используйте понимание:

>>> [s for s in L if ' and ' in s] 
['John and Mary', 'Iva and Mark Li'] 
5

Поскольку ваша функция не имеет возврата заявления, его всегда возвращает None. Вам необходимо заменить print на return.

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