list内のlistだけを指定順序で整列


python上で

[code]

    lst=[[1,2,3],[1,2,3],[1,2,3,],[1,2,3]]
    
[/code]

が用意されていて  
それを

[code]

    lst=[[2,3,1],[2,3,1],[2,3,1],[2,3,1]]
    
[/code]

にソートしたいです。  
リストうちの要素の中身だけをユーザの指定順序でソートするには  
どのようにしたらよいでしょうか




子リスト要素数が固定であり、外部から要素ソート順`order`を与えるパターンです：

[code]

    data = [[1,2,3], [1,2,3], [1,2,3], [1,2,3]]
    order = [2,0,1]
    
    result = []
    for sublist in data:
        result.append( [pack[1] for pack in sorted(zip(order, sublist))] )
    
[/code]

上記をまとめて、リスト内包表記のネストでも記述は可能です（可読性は微妙ですが...）

[code]

    result = [[pack[1] for pack in sorted(zip(order, sublist))] for sublist in data]
    
[/code]




子リスト要素数が固定であり、外部から要素ソート順`order`を与えるパターンです：

[code]

    data = [[1,2,3], [1,2,3], [1,2,3], [1,2,3]]
    order = [2,0,1]
    
    result = []
    for sublist in data:
        result.append( [pack[1] for pack in sorted(zip(order, sublist))] )
    
[/code]

上記をまとめて、リスト内包表記のネストでも記述は可能です（可読性は微妙ですが...）

[code]

    result = [[pack[1] for pack in sorted(zip(order, sublist))] for sublist in data]
    
[/code]

