2016-04-19 3 views
1

У меня есть список строк, как следующее в Python:Python поиск шаблонов в списках строк

  SS = ['T', 'Q', 'T', 'D', 'Q', 'D', 'D', 'Q', 'T', 'D'] 

Есть в любом случае я могу проверить, сколько Ts непосредственно следует D, так что в этом случае, 2 Ts (второй и последний T), которые отвечают требованию.

Я пробовал это, но он не работал, хотя бы какой-нибудь совет? спасибо!

  if ['T','Q'] in SS: 
       print ("yes") 

ответ

4

Вы можете сделать это итеративно проверку, если следующий символ был D и реализации какого-то счетчик. Это (возможно) конец, хотя, возможно, и не самый лучший способ.

SS = ['T', 'Q', 'T', 'D', 'Q', 'D', 'D', 'Q', 'T', 'D'] 
print("".join(SS).count("TD")) 

Результат:

2 
3
SS = ['T', 'Q', 'T', 'D', 'Q', 'D', 'D', 'Q', 'T', 'D'] 
print zip(SS, SS[1:]).count(('T', 'D')) 
2

Последовательность строк односимвольных может быть выражено либо в ваших данных list или в виде строки из нескольких символов, основные различия будучи list методов против str (есть также тип tuple) и изменчивость.

>>> SS = ['T', 'Q', 'T', 'D', 'Q', 'D', 'D', 'Q', 'T', 'D'] 
>>> SS_joined = ''.join(SS) 
>>> 'TQ' in SS_joined 
True 
0

Вы всегда можете вернуться.

>>> import re 
>>> SS = ['T', 'Q', 'T', 'D', 'Q', 'D', 'D', 'Q', 'T', 'D'] 
>>> new = ''.join(SS) 
>>> len(re.findall('TD',new)) 
2 
Смежные вопросы