Python:在嵌套列表

时间:2016-09-11 02:48:21

标签: python python-2.7

我有一个嵌套列表: list = [[3,2,1],[8,7,9],[5,6,4]]

我想按升序对每个子列表进行排序。我虽然是循环遍历列表,但它只想对最后一个子列表进行排序。

for i in list: newList = sorted[i]

因此,对于这个例子,for循环将循环遍历整个列表,但只排序最后一个子列表[5,6,4]。如何对所有子列表进行排序?

Python版本:2.7.10

操作系统:OS X El Capitan

3 个答案:

答案 0 :(得分:2)

您正在for循环中的每次迭代中替换newList的值。因此,在for循环结束后,newList的值等于原始嵌套列表中最后一个列表的排序值。这样做:

>>> list = [[3,2,1],[8,7,9],[5,6,4]]
>>> newlist = map(sorted, list)
>>> newlist
[[1, 2, 3], [7, 8, 9], [4, 5, 6]]

答案 1 :(得分:1)

您正在创建一个新列表并将其分配给新名称,然后将其丢弃。使用sort方法对每个列表引用进行排序。另请注意,使用列表引用来索引主列表是没有意义的,并且应该避免使用与内置函数相同的名称命名变量(在这种情况下为list)。

>>> l = [[3,2,1],[8,7,9],[5,6,4]]
>>> for i in l:
...     i.sort()
...
>>> l
[[1, 2, 3], [7, 8, 9], [4, 5, 6]]

答案 2 :(得分:0)

您的代码无效的原因是您正在创建新的排序列表(sorted()创建新列表)并将其分配给变量(newList)。该变量未被使用。

Python列表有一个.sort()方法。所以你的循环代码可以如下工作

for sublist in list:
    sublist.sort() #sorts the sublist in place
print list #all sublists will be sorted in ascending order

如Nehal J Wani所述,您还可以使用地图将一个函数应用于列表的每个元素。

newSortedList = map(sorted,list) #newSortedList will have all sublists sorted