Уведомления

Группа в Telegram: @pythonsu

#1 Март 10, 2013 12:51:31

MarkHammer
Зарегистрирован: 2013-02-24
Сообщения: 97
Репутация: +  0  -
Профиль   Отправить e-mail  

сортировка списка

'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 меньшим номером … к большему…

Офлайн

#2 Март 10, 2013 12:54:03

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

сортировка списка

Не поленитесь прочитать

http://www.python.su/forum/topic/20871/



Офлайн

#3 Март 10, 2013 13:14:04

Viktor_Zorichev
Зарегистрирован: 2012-09-15
Сообщения: 14
Репутация: +  3  -
Профиль   Отправить e-mail  

сортировка списка

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']

Офлайн

#4 Март 10, 2013 16:02:14

MarkHammer
Зарегистрирован: 2013-02-24
Сообщения: 97
Репутация: +  0  -
Профиль   Отправить e-mail  

сортировка списка

Viktor_Zorichev


да - работает, думал правда, что это можно сделать при помощи рег. выражений…
Спасибо !!!

Офлайн

#5 Март 10, 2013 16:28:20

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

сортировка списка

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])))



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#6 Март 11, 2013 00:14:01

Viktor_Zorichev
Зарегистрирован: 2012-09-15
Сообщения: 14
Репутация: +  3  -
Профиль   Отправить e-mail  

сортировка списка

Прочитал 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)

Офлайн

#7 Март 13, 2013 11:38:55

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

сортировка списка

> Мне понятнее пример без использования cmp

cmp это функция сравнения, ей передаётся 2 аргумента из списка и она говорит какой больше.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#8 Март 13, 2013 21:06:33

Viktor_Zorichev
Зарегистрирован: 2012-09-15
Сообщения: 14
Репутация: +  3  -
Профиль   Отправить e-mail  

сортировка списка

Да, спасибо

Офлайн

#9 Март 14, 2013 00:55:16

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

сортировка списка

Сортировка по cmp очень медленная и Гвидо сам не рекомендовал ее применять без крайней необходимости.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version