不使用zip方法将相邻元素进行比较

时间:2015-10-02 04:51:20

标签: python

你如何比较python中列表中的两个相邻元素?如何在进行for循环时保存或存储该项的值?我试图不使用zip方法,只是使用普通的for循环。

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)

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分:0)

step使用第三个可选的range参数 - 并且不要从len(...)中减去1!你的逻辑是不完整的:如果一对字符串中的第一个字符串更长怎么办?在这种情况下,你什么都不做。

我们不清楚你要做什么。这个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)