2014-12-18 2 views
0

Я хочу прокрутить список и закончить, когда достиг определенного значения. Что-то вроде:Цитирование через список с использованием оператора while

ls = ['yes','yes','stop','yes'] 

while a in ls <> 'stop': 
    print a 

напечатает:

yes 
yes 

Я знаю, что я могу сделать:

for a in ls: 
    if a == 'stop': 
     break 
    print a 

но это кажется беспорядочным.

+1

Это может быть "грязным", но совершенно ясно и делает работу –

+1

Кроме того, вы не должны использовать '<>'. Этот оператор был устаревшим в Python 2.5 и полностью удален из Python 3.x. Вместо этого вы должны использовать '! ='. – iCodez

ответ

4

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

print ls[:ls.index('stop')] 
# => ['yes', 'yes'] 

В цикле:

for a in ls[:ls.index('stop')]: 
    print a 
4

Вы можете использовать itertools.takewhile:

>>> from itertools import takewhile 
>>> ls = ['yes','yes','stop','yes'] 
>>> for i in takewhile(lambda x: x != 'stop', ls): 
...  i 
... 
'yes' 
'yes' 
>>> 
Смежные вопросы