从列表中推断元组值时Python索引超出范围
我是Python新手,我正在尝试做以下练习: 使用for循环,获取以下列表,并根据列表元组的值之和对其进行排序: [(1,5)、(9,0)、(12,3)、(5,4)、(13,6)、(1,1)] 但是,当我编写以下代码时:从列表中推断元组值时Python索引超出范围,python,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 = []
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
回溯(最近一次呼叫最后一次):
文件“PythonExercises.py”,第11行,在
列表2.append(tuple1[i]+tuple2[i])
索引器:列表索引超出范围
我需要得到元组值之间的和,然后将它们存储在一个空列表中并对该列表进行排序,但是,如果我应用该方法,我似乎无法工作。有人能帮我吗?干杯。这里的主要问题在于tuple1中i的行
您的元组1
是[1,9,12,5,13,1]
。当i=9
时,您的列表明显超出范围(其长度仅为6)。对范围内的i使用(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)
这里的主要问题在于tuple1中i的行
您的元组1
是[1,9,12,5,13,1]
。当i=9
时,您的列表明显超出范围(其长度仅为6)。对范围内的i使用(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)
您正在循环列表中的元素,而不是索引
请尝试以下方法:
for i in range(len(tuple1)):
list2.append(tuple1[i] + tuple2[i])
您正在循环列表中的元素,而不是索引
请尝试以下方法:
for i in range(len(tuple1)):
list2.append(tuple1[i] + tuple2[i])
您正在迭代元组的内容,而不是元组的长度。
添加len()函数以获取长度并使用它进行迭代。像
for i in len(tuple1):
list2.append(tuple1[i] + tuple2[i])
您正在迭代元组的内容,而不是元组的长度。
添加len()函数以获取长度并使用它进行迭代。像
for i in len(tuple1):
list2.append(tuple1[i] + tuple2[i])
问题是您正在循环列表中的元素。当您创建列表tuple1
和tuple2
时,您也会这样做,但现在您希望得到不同的结果
一种方法是使用范围内i的(len(tuple1))
另一个想法是在一行中求和,如下所示:
tuple\u sum=[列表1中的tuple的sum(tuple)]
输出:
[6,9,15,9,19,2]
现在您可以对其进行排序:
tuple\u sum.sort()
输出:
[2,6,9,9,15,19]
问题是您正在循环列表中的元素。当您创建列表tuple1
和tuple2
时,您也会这样做,但现在您希望得到不同的结果
一种方法是使用范围内i的(len(tuple1))
另一个想法是在一行中求和,如下所示:
tuple\u sum=[列表1中的tuple的sum(tuple)]
输出:
[6,9,15,9,19,2]
现在您可以对其进行排序:
tuple\u sum.sort()
输出:
[2,6,9,9,15,19]
试着在for循环中打印i
,看看你的期望值……作为一种旁白,按和排序的python方法是list1.sort(key=sum)
)试着在for循环中打印i
,看看您的期望值是多少……作为一种补充,按总和排序的python方法是list1.sort(key=sum)
:)嗨,好吧,我明白你所说的,除了I=9之外,我错在哪里了。循环如何到达i=9?干杯原因是,您不是在列表的索引中循环,而是在元素中循环。对于tuple1中的元素,你的循环本质上是(仅迭代元素),而不是范围内的索引(len(tuple1))
(迭代索引)嗨,好吧,我理解你所说的,除了I=9之外,我错在哪里了。循环如何到达i=9?干杯原因是,您不是在列表的索引中循环,而是在元素中循环。对于tuple1中的元素,循环本质上是(仅迭代元素),而不是范围内的索引(len(tuple1))
(迭代索引)