首页 > 解决方案 > 从列表中推断元组值时 Python 索引超出范围

问题描述

我是 Python 新手,我正在尝试做以下练习:

使用 for 循环,获取以下列表并根据列表元组的值的总和对其进行排序:[(1,5),(9,0),(12,3),(5,4) ,(13,6),(1,1)]

但是,当我编写以下代码时:

list1 = [(1,5),(9,0),(12,3),(5,4),(13,6),(1,1)]
tuple1 = [first[0] for first in list1]
tuple2 = [second[1] for second in list1]

list2 = []

for i in tuple1:
    list2.append(tuple1[i] + tuple2[i])
    
print(list2)

我不断收到以下错误:

Traceback (most recent call last):
  File "PythonExercises.py", line 11, in <module>
    list2.append(tuple1[i] + tuple2[i])
IndexError: list index out of range

我需要获取元组值之间的总和,然后将它们存储在一个空列表中并对该列表进行排序,但是,如果我应用该方法,我似乎无法工作。有人能帮我吗?干杯。

标签: python

解决方案


这里的主要问题在于线路for i in tuple1

tuple1的是[1,9,12,5,13,1]。当 时i=9,您的列表明显超出范围(其长度仅为 6)。改为使用for i in range(len(tuple1))。完整的代码将是

tuple1 = [first[0] for first in list1]
tuple2 = [second[1] for second in list1]

list2 = []

for i in range(len(tuple1)):
    list2.append(tuple1[i] + tuple2[i])
    
print(list2)

推荐阅读