Python:对除第一行之外的列表进行排序

Max*_*Lgv 1 python sorting list line

我有这个清单:

[['Nom', 'Francais', 'Anglais', 'Maths'], ['Catherine', '9', '17', '9'], ['Karim', '12', '15', '11'], ['Rachel', '15', '15', '14'], ['Roger', '12', '14', '12'], ['Gabriel', '7', '13', '8'], ['Francois', '14', '8', '15'], ['Henri', '10', '12', '13'], ['Stephane', '18', '12', '8'], ['Karine', '9', '10', '10'], ['Marie', '10', '10', '10'], ['Claire', '15', '9', '12'], ['Marine', '12', '9', '12']]
Run Code Online (Sandbox Code Playgroud)

我想用名称对其进行排序(或者,换句话说,按列表中每个列表的 [0] 元素的字母顺序排序),但我不希望第一个列表 ( )['Nom', 'Francais', 'Anglais', 'Maths']与其他人,怎么能这么做呢?

多谢 !

Val*_*ntz 5

您可以使用范围分配:

>>> from pprint import pprint # just to have a nice display
>>> data = [['Nom', 'Francais', 'Anglais', 'Maths'], ['Catherine', '9', '17', '9'], ['Karim', '12', '15', '11'], ['Rachel', '15', '15', '14'], ['Roger', '12', '14', '12'], ['Gabriel', '7', '13', '8'], ['Francois', '14', '8', '15'], ['Henri', '10', '12', '13'], ['Stephane', '18', '12', '8'], ['Karine', '9', '10', '10'], ['Marie', '10', '10', '10'], ['Claire', '15', '9', '12'], ['Marine', '12', '9', '12']]
>>> pprint(data)
[['Nom', 'Francais', 'Anglais', 'Maths'],
 ['Catherine', '9', '17', '9'],
 ['Karim', '12', '15', '11'],
 ['Rachel', '15', '15', '14'],
 ['Roger', '12', '14', '12'],
 ['Gabriel', '7', '13', '8'],
 ['Francois', '14', '8', '15'],
 ['Henri', '10', '12', '13'],
 ['Stephane', '18', '12', '8'],
 ['Karine', '9', '10', '10'],
 ['Marie', '10', '10', '10'],
 ['Claire', '15', '9', '12'],
 ['Marine', '12', '9', '12']]
>>> data[1:] = sorted(data[1:])
>>> pprint(data)
[['Nom', 'Francais', 'Anglais', 'Maths'],
 ['Catherine', '9', '17', '9'],
 ['Claire', '15', '9', '12'],
 ['Francois', '14', '8', '15'],
 ['Gabriel', '7', '13', '8'],
 ['Henri', '10', '12', '13'],
 ['Karim', '12', '15', '11'],
 ['Karine', '9', '10', '10'],
 ['Marie', '10', '10', '10'],
 ['Marine', '12', '9', '12'],
 ['Rachel', '15', '15', '14'],
 ['Roger', '12', '14', '12'],
 ['Stephane', '18', '12', '8']]
Run Code Online (Sandbox Code Playgroud)