2015-10-02 2 views
0

Как бы вы сравнили два смежных элемента в списке в python? Как сохранить или сохранить значение этого элемента во время цикла for? Я пытаюсь не использовать метод zip и просто использовать обычный цикл.Сравнение смежных элементов вместе без использования метода zip

comparing_two_elements = ['Hi','Hello','Goodbye','Does it really work finding longest length of string','Jet','Yes it really does work'] 

longer_string = '' 


for i in range(len(comparing_two_elements)-1): 
    if len(prior_string) < len(comparing_two_elements[i + 1]): 
     longer_string = comparing_two_elements[i+1] 
print(longer_string) 
+1

Почему вы пытаетесь избежать функции 'zip()'? Встроенные функции встроены не без оснований. – TigerhawkT3

+0

О, потому что я заметил, что C использовал временную переменную для сравнения двух строк вместе, и мне было интересно, как это сделать в python? О, игнорируйте предыдущую строку, которую я хотел бы поставить compare_two_elements [i]. –

+1

И что именно вы пытаетесь сделать? Похоже, вы хотите найти строку максимальной длины в 'comparing_two_elements'. – TigerhawkT3

ответ

0

Ниже работает просто «экономии» первый элемент в списке как самый длинный элемент, как это будет первый раз, когда вы перебираем в списке, а затем на последующих итераций будет сравнить длину этот элемент в длину следующего элемента в списке.

longest_element = None 
for element in comparing_two_elements: 
    if not longest_element: 
     longest_element = element 
     continue 
    if len(longest_element) < len(element): 
     longest_element = element 

Если вы хотите идти «интересный» маршрут, вы можете сделать это с комбинацией других функций, для например

length_map = map(len, comparing_two_elements) 
longest_index = length_map.index(max(length_map)) 
longest_element = comparing_two_elements[longest_index] 
+0

A) Правильный способ поиска самой длинной строки не будет таким. B) Если вы инициализировали 'longest_element' как' '' ', вы могли бы избавиться от первого' if'. C) Ваш «интересный» маршрут настолько непутичен, что это больно. – TigerhawkT3

0

Используйте третий, дополнительный step аргумент range - и Дон» t вычесть 1 от len (...)! Ваша логика неполна: что, если первая из пары строк длиннее? вы ничего не делаете в этом случае.

Непонятно, что вы пытаетесь сделать. Этот for цикл выполняется через i = 0, 2, 4, ... до, но исключая len(comparing_two_elements) (предполагается, что даже!), И печатает больше каждой смежной пары:

for i in range(0, len(comparing_two_elements), 2): 
    if len(comparing_two_elements[i]) < len(comparing_two_elements[i + 1]): 
     idx = i 
    else: 
     idx = i + 1 
    print(comparing_two_elements[idx]) 

Это не может делать то, что вы хотите, но, как заметили несколько человек, неясно, что это такое. По крайней мере, это то, о чем вы можете рассуждать и адаптироваться.

Если вам нужна самая длинная строка в последовательности seq, все смежные пары rigamarole бессмысленны; просто используйте:

longest_string = max(seq, key=len) 
+0

Если вы не знаете, в чем вопрос, пожалуйста, попросите пояснения в комментарии, а не в ответе. – TigerhawkT3

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