Форум сайта python.su
0
'1021_cab2', ‘119_cab2’, ‘1345_cab2’, ‘137_cab2’, ‘145_cab2’, ‘146_cab2’, ‘154_cab2’, ‘187_cab2’, ‘189_cab2’, ‘212_cab2’, ‘221_cab2’, ‘223_cab2’, ‘239_cab2’, ‘275_cab2’, ‘282_cab2’, ‘283_cab2’, ‘300_cab2’, ‘31_cab2’, ‘353_cab2’, ‘385_cab2’, ‘387_cab2’, ‘396_cab2’, ‘3999_cab2’, ‘467_cab2’, ‘506_cab2’, ‘520_cab2’, ‘524_cab2’, ‘551_cab2’, ‘569_cab2’, ‘575_cab2’, ‘605_cab2’, ‘612_cab2’, ‘624_cab2’, ‘631_cab2’, ‘63_cab2’, ‘690_cab2’, ‘721_cab2’, ‘72_cab2’, ‘74_cab2’, ‘81_cab2’, ‘82_cab2’, ‘85_cab2’, ‘88_cab2’, ‘89_cab2’, ‘927_cab2’, ‘929_cab2’
помогите плиз отсортировать такой вот список от cab2 c меньшим номером … к большему…
Офлайн
63
Не поленитесь прочитать
http://www.python.su/forum/topic/20871/
Офлайн
3
l = ['1021_cab2', '119_cab2', '1345_cab2', '137_cab2', '145_cab2', '146_cab2', '154_cab2', '187_cab2', '189_cab2', '212_cab2', '221_cab2', '223_cab2', '239_cab2', '275_cab2', '282_cab2', '283_cab2', '300_cab2', '31_cab2', '353_cab2', '385_cab2', '387_cab2', '396_cab2', '3999_cab2', '467_cab2', '506_cab2', '520_cab2', '524_cab2', '551_cab2', '569_cab2', '575_cab2', '605_cab2', '612_cab2', '624_cab2', '631_cab2', '63_cab2', '690_cab2', '721_cab2', '72_cab2', '74_cab2', '81_cab2', '82_cab2', '85_cab2', '88_cab2', '89_cab2', '927_cab2', '929_cab2'] li = [] res = [] for i in l: li.append(int(i.split('_')[0])) for i in sorted(li): res.append(str(i) + '_cab2') print(res)
['31_cab2', '63_cab2', '72_cab2', '74_cab2', '81_cab2', '82_cab2', '85_cab2', '88_cab2', '89_cab2', '119_cab2', '137_cab2', '145_cab2', '146_cab2', '154_cab2', '187_cab2', '189_cab2', '212_cab2', '221_cab2', '223_cab2', '239_cab2', '275_cab2', '282_cab2', '283_cab2', '300_cab2', '353_cab2', '385_cab2', '387_cab2', '396_cab2', '467_cab2', '506_cab2', '520_cab2', '524_cab2', '551_cab2', '569_cab2', '575_cab2', '605_cab2', '612_cab2', '624_cab2', '631_cab2', '690_cab2', '721_cab2', '927_cab2', '929_cab2', '1021_cab2', '1345_cab2', '3999_cab2']
Офлайн
0
Viktor_Zorichev
Офлайн
186
l = ['1021_cab2', '119_cab2', '1345_cab2', '137_cab2', '145_cab2', '146_cab2', '154_cab2', '187_cab2', '189_cab2', '212_cab2', '221_cab2', '223_cab2', '239_cab2', '275_cab2', '282_cab2', '283_cab2', '300_cab2', '31_cab2', '353_cab2', '385_cab2', '387_cab2', '396_cab2', '3999_cab2', '467_cab2', '506_cab2', '520_cab2', '524_cab2', '551_cab2', '569_cab2', '575_cab2', '605_cab2', '612_cab2', '624_cab2', '631_cab2', '63_cab2', '690_cab2', '721_cab2', '72_cab2', '74_cab2', '81_cab2', '82_cab2', '85_cab2', '88_cab2', '89_cab2', '927_cab2', '929_cab2'] l.sort(lambda x,y: cmp(int(x.split("_")[0]),int(y.split("_")[0])))
Офлайн
3
Прочитал http://docs.python.org/3.3/howto/sorting.html
Замечательно коротко и ясно написано 
Мне понятнее пример без использования cmp (про cmp, кстати, написано, что это “old way”).
>>> l = ['1021_cab2', '119_cab2', '1345_cab2', '137_cab2'] >>> sorted(l, key=lambda i: int(i.split('_')[0])) ['119_cab2', '137_cab2', '1021_cab2', '1345_cab2']
Отредактировано Viktor_Zorichev (Март 11, 2013 00:18:37)
Офлайн
186
> Мне понятнее пример без использования cmp
cmp это функция сравнения, ей передаётся 2 аргумента из списка и она говорит какой больше.
Офлайн
3
Да, спасибо 
Офлайн
Сортировка по cmp очень медленная и Гвидо сам не рекомендовал ее применять без крайней необходимости.
Офлайн