比较列表中的每个相邻值

时间:2019-10-09 14:36:12

标签: python-3.x

我正在使用Python 3进行列表处理。 我有2个列表,其中一个具有自定义编号, 另一个是空的。 该代码的目的是检查第一个列表的值是否大于先前的值,并且如果它大于先前的元素,则将其附加到第二个列表。

我必须使用基本的pythonic语法。我不能使用任何库等。

list1=[5,9,3,2,7,11]
list2 = []
for i in range(len(list1)):
    if list1[i] < list1[i+1]:
        list2.append(list1[i+1])
print (list2)

如果我运行完整的代码块;

Traceback (most recent call last):

  File "<ipython-input-209-8d49a68543e3>", line 4, in <module>
    if list1[i] < list1[i+1]:

IndexError: list index out of range

但是当我只运行list2时,我得到的是我所期望的 [9,7,11]

1 个答案:

答案 0 :(得分:1)

您不能一直将len(list1) - 1的值提高到i,并期望i+1是列表中的索引。 list[len(list1)]在列表之外。

如果循环中需要i+1,则循环只能进行到i+1的所有可能有效值恰好是len(list1) - 2为止。为此,您需要对range进行一些调整

list1=[5,9,3,2,7,11]
list2 = []
for i in range(len(list1) - 1): # iterate until penultimate index
    if list1[i] < list1[i+1]:
        list2.append(list1[i+1])
print (list2)