使用Python排序列表

时间:2015-07-03 10:01:13

标签: python sorting

我的python 2.7有错误 我正在尝试排序元素列表。 这是我的代码:

index=7 
print(len(myList)) #print 16
sortedList = sorted(myList,key=lambda x: float(x[index]),reverse=True)

我无法理解为什么我有这个错误,我的索引小于列表长度...有什么想法吗?

    sortedList = sorted(myList,key=lambda x: float(x[index]),reverse=True)
IndexError: list index out of range

2 个答案:

答案 0 :(得分:2)

并非index小于len(list)但在此功能中

    sortedList = sorted(myList,key=lambda x: float(x[index]),reverse=True)

列表中的每个项目都作为x传递,因此它正在尝试访问x[7],但在所有情况下可能都不是这样

答案 1 :(得分:1)

鉴于您的排序键和您看到的错误,我假设Class是一个列表列表。

您似乎正在尝试按{8}成员项的值对myList的成员进行排序。

不幸的是,并非myList的所有成员都有8个成员,因此您遇到了错误:myList

您没有发现这一点,因为您正在检查IndexError: list index out of range的长度,而不是其成员列表的长度。

您可以尝试执行此操作:

myList

我怀疑其中至少有一个小于8.让我用代码演示:

for sublist in myList:
    print(len(sublist))

小风格笔记

骆驼案例如对于变量名称,通常会避免使用import random working_list = [] bad_list = [] for n in range(16): #Make a sublist of random integers - 10 members long good_sublist = [random.randint(0,10) for _ in range(10)] #make a sublist of random integers from 0 to 15 members long bad_sublist = [random.randint(0,10) for _ in range(n)] working_list.append(good_sublist) bad_list.append(bad_sublist) # Your code from here on in index=7 sortedList = sorted(working_list,key=lambda x: float(x[index]),reverse=True) print sortedList # all Good! Each sublist has 10 members - the list is sorted by the 7th member sortedList = sorted(bad_list,key=lambda x: float(x[index]),reverse=True) print sortedList myList,首选sortedListmy_list(请参阅PEP8)。为了便于参考,我在代码示例中保留了您的名字,但我建议您转到下划线样式以获得可维护性,便于其他Python编程人员阅读等。