2015-07-14 3 views
1

Прямо сейчас у меня есть строковый массив, и я хочу провести цикл через массив строк и сравнить значение по одному индексу со значением в следующем индексе. Например, если бы я делал это в Java, код будет выглядеть примерно так:Сравнение последовательных строк в Python

string[] some = ["IP", "IP", "ADDRESS", "2342.42.2", "IP", "ASDF"]; 
for (int i = 0 ; i < some.length() ; i++) 
    if (some[i] == "IP" && some[i+1] == "ADDRESS") 
     int ipaddress = some[i+2]; 

Я знаю, что Python немного отличается, но в основном я пытаюсь найти первый IP-адрес. Как я могу сравнить текущий элемент и следующий в цикле?

ответ

1

Это прямой перевод вашего кода. В python enumerate выполняет итерацию по списку как пары индексов, значений.

>>> some = ["IP", "IP", "ADDRESS", "2342.42.2", "IP", "ASDF"]; 
>>> for i,v in enumerate(some): 
...  if v=="IP" and some[i+1] == "ADDRESS": 
...   ipaddress = some[i+2] 
... 
>>> ipaddress 
'2342.42.2' 

Однако вы можете рассмотреть случаи, когда таких вещей нет. Так что вы можете так же for i,v in enumerate(some[:-2]). Это гарантирует, что вы не выйдете из пределов списка, иначе вы получите IndexError

+0

Да, я просто понял это сразу после того, как задал вопрос ... глупо с моей стороны. Я сделал что-то вроде этого: 'для индекса в диапазоне (LEN (datainarray)): \t \t печать 'Текущая строка:', datainarray [индекс] \t \t если datainarray [индекс] == "IP" и datainarray [ index + 1] == "ADDRESS": \t \t \t print "HERES ONE" ' – trynacode

+0

Использование' enumerate' является предпочтительным способом в Python –

+0

О, хорошо. Посмотрите на это и используйте это вместо этого! – trynacode

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