我正在使用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]
答案 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)