在python3+中有没有一种方法可以对嵌套列表进行排序?

2024-04-26 04:55:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用嵌套列表,我想知道如何按字母顺序排列所有列表,同时将它们包含在各自的列表中。你知道吗

例如,如果我有一个包含品牌名称的嵌套列表:

lst = [['Canada Goose', 'Mackage', 'PJ'], ['GAP', 'Fendi', 'Nike'], ['Gucci', 'Adidas']]

及其输出:

sorted_lst = [['Canada Goose', 'Mackage', 'PJ'], ['Fendi', 'GAP', 'Nike'], ['Adidas', 'Gucci']]

我知道在常规列表中可以使用.sort()方法,但是这里似乎不是这样。 我也读了Sorting lists inside nested lists,但我似乎不明白


Tags: 名称列表字母lists品牌gaplstcanada
2条回答

AppHandwerker的解决方案创建了一个新的数据结构来保存结果,保持原始的lst不变。如果这是一个要求,那么这个解决方案是最好的。一般来说,避免变异也是一个好主意,因为它会导致由aliasing引起的细微错误。你知道吗

如果您不需要将原始数据保持在未排序的顺序,这里有一个in-place解决方案作为替代方案:就地排序的优点是不需要为保存排序结果的新列表分配额外的内存。你知道吗

for x in lst:
    x.sort()

正如@SyntaxVoid评论的那样

sorted_lst = [sorted(x) for x in lst]

你应该照你说的做。你知道吗

为了弄清楚这里发生了什么,您正在使用生成器生成一个新的排序列表列表。你知道吗

[]如您所知,这是一个列表

上面所做的和写作差不多

    sorted_lst = []
    for x in lst:
        sorted_lst.append(sorted(x)) 

您应该阅读https://realpython.com/python-sort/以获得更多帮助,并了解排序和排序是如何工作的。你知道吗

除了更好地理解SyntaxVoid的答案之外,我建议您使用googlepython生成器,因为我的解释是一个很好的例子,并没有解释我的解释和代码之间潜在的差异,即一个生成d生成器,另一个生成列表。你知道吗

相关问题 更多 >