Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从列表中推断元组值时Python索引超出范围_Python - Fatal编程技术网

从列表中推断元组值时Python索引超出范围

从列表中推断元组值时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 = []

我是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
回溯(最近一次呼叫最后一次):
文件“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))
(迭代索引)