代码之家  ›  专栏  ›  技术社区  ›  Xantium

对列表中的列表进行排序

  •  3
  • Xantium  · 技术社区  · 6 年前

    假设我在一个列表中有一个列表,它包含在一个列表中。例如:

    foo = [[[2, 2, 2], [1, 1, 1], [3, 3, 3]], [[2, 2, 2], [1, 1, 1], [3, 3, 3]]]
    

    我想按顺序分类:

    foo = [[[1, 1, 1], [2, 2, 2], [3, 3, 3]], [[1, 1, 1], [2, 2, 2], [3, 3, 3]]]
    

    我可以用 [sorted(i) for i in foo] 为了达到这个目的。但是,是否有某种方法可以在不理解列表的情况下对该列表进行排序(或创建新列表)?

    列表中的值本身将更改,但不需要排序。

    我所做的一切都归结为上述方法。

    2 回复  |  直到 6 年前
        1
  •  6
  •   AlanK    6 年前

    如果要避免创建新列表,只需遍历列表并调用 .sort()

    >>> foo = [[[2, 2, 2], [1, 1, 1], [3, 3, 3]], [[2, 2, 2], [1, 1, 1], [3, 3, 3]]]
    
    for i in foo:
        i.sort()
    
    >>> foo                                                                         
    [[[1, 1, 1], [2, 2, 2], [3, 3, 3]], [[1, 1, 1], [2, 2, 2], [3, 3, 3]]]
    
        2
  •  2
  •   flamenco    6 年前

    如果您不介意创建一个新列表,使用 map 功能:

    In [1]: foo = [[[2, 2, 2], [1, 1, 1], [3, 3, 3]], [[2, 2, 2], [1, 1, 1], [3, 3, 3]]]
    
    In [2]: list(map(sorted, foo))
    Out[2]: [[[1, 1, 1], [2, 2, 2], [3, 3, 3]], [[1, 1, 1], [2, 2, 2], [3, 3, 3]]]