Python中的嵌套列表排序
这是一个嵌套循环的问题,我必须按字母顺序找到学生的名字,分数排在第二位。Python中的嵌套列表排序,python,arrays,list,Python,Arrays,List,这是一个嵌套循环的问题,我必须按字母顺序找到学生的名字,分数排在第二位。 我遇到以下错误: Traceback (most recent call last): File "solution.py", line 12, in <module> if (l[i][0]==l[0][0]): IndexError: list index out of range 我甚至打印了索引,显示值在范围内。请运行函数以查找以下输出: 4 i= 0 i= 1 i= 2 i= 3
我遇到以下错误:
Traceback (most recent call last):
File "solution.py", line 12, in <module>
if (l[i][0]==l[0][0]):
IndexError: list index out of range
我甚至打印了索引,显示值在范围内。请运行函数以查找以下输出:
4
i= 0
i= 1
i= 2
i= 3
如果我能从社区中得到更好的方法,我会很高兴,但我主要担心的是我得到“索引超出范围”的错误。这里似乎不正确,因为
l
,在某个时刻,元素比您预期的少。问题是您正在从循环中删除项目。经验法则是,在对列表进行迭代时,决不能从列表中删除项目
我现在还不太理解你的代码,但是你可以改变第一个循环的方式,并对下一个循环应用相同的逻辑,至少你会得到你想要的
这里的想法是使用while语句,在每次迭代之后,您将对列表的大小进行另一次验证。同时,对于for循环,只有在第一次,因为range将返回一个列表,而for循环将只在已经创建的列表上迭代
l=list()
p=list()
q=list()
for i in range (int(raw_input())):
p=[raw_input(),int(raw_input())]
p.reverse()
l.append(p)
l.sort()
print len(l)
i = 0
while i < len(l):
print "i= ",i
if (l[i][0]==l[0][0]):
l.remove(l[i])
i += 1
print l
l=list()
p=列表()
q=列表()
对于范围内的i(int(原始输入()):
p=[raw\u input(),int(raw\u input())]
p、 反向
l、 追加(p)
l、 排序()
打印透镜(l)
i=0
而我
您正在打印的是i
,而不是l
。不要删除循环中的元素,但在执行删除之前,行中会出现错误,即在执行删除时,行中会出现第12行错误13@DhrubKumar是的,但请记住,你处于一个循环中
l=list()
p=list()
q=list()
for i in range (int(raw_input())):
p=[raw_input(),int(raw_input())]
p.reverse()
l.append(p)
l.sort()
print len(l)
i = 0
while i < len(l):
print "i= ",i
if (l[i][0]==l[0][0]):
l.remove(l[i])
i += 1
print l