Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 8, 2013 19:32:54

Eva_777
Зарегистрирован: 2013-01-08
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите отсортировать

Помогите, плиз, отсортировать такой список “WTS1234, ACDW485, WTS72, SHR728, ACDW14, SHR16, WTS16”
Буквенная часть отсортированного списка должна быть такой “WTS, ACDW, SHR”, а цифровая часть должна быть отсортирована по возрастанию.
Я-новичок, и для меня это достаточно сложная задачка)

Отредактировано Eva_777 (Янв. 8, 2013 19:42:17)

Офлайн

#2 Янв. 8, 2013 19:42:08

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Помогите отсортировать

Eva_777
Буквенная часть отсортированного списка должна быть такой
какой?
[1,4,3,'f',5,'q']
во что такой список должен превратиться?

Офлайн

#3 Янв. 8, 2013 19:44:00

Eva_777
Зарегистрирован: 2013-01-08
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите отсортировать

“WTS1234, ACDW485, WTS72, SHR728, ACDW14, SHR16, WTS16” -исходный список
“WTS, ACDW, SHR” - Буквенная часть отсортированного списка

Офлайн

#4 Янв. 8, 2013 19:56:58

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

Помогите отсортировать

Я вижу строку а не список в вашем примере. Уточните задачу, если хотите получить нужный вам ответ. Вид списка на входе и на выходе.

Офлайн

#5 Янв. 8, 2013 19:58:00

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Помогите отсортировать

import re
ls = "WTS1234, ACDW485, WTS72, SHR728, ACDW14, SHR16, WTS16".split()
sorted(ls,key=lambda e : int(re.match('.*?(\d+)',e).group(1)))
Out[38]: ['ACDW14,', 'SHR16,', 'WTS16', 'WTS72,', 'ACDW485,', 'SHR728,', 'WTS1234,']

Офлайн

#6 Янв. 8, 2013 20:07:40

Eva_777
Зарегистрирован: 2013-01-08
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите отсортировать

dimy44
Я вижу строку а не список в вашем примере. Уточните задачу, если хотите получить нужный вам ответ. Вид списка на входе и на выходе.

это списки) сорри)))

Офлайн

#7 Янв. 8, 2013 20:13:26

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

Помогите отсортировать

Eva_777
“WTS1234, ACDW485, WTS72, SHR728, ACDW14, SHR16, WTS16” -исходный список “WTS, ACDW, SHR” - Буквенная часть отсортированного списка
Если указанный “исходный список” является для Вас списком (list), то я - pass).

Офлайн

#8 Янв. 8, 2013 20:15:33

Eva_777
Зарегистрирован: 2013-01-08
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите отсортировать

Вы, конечно, извините, а если это будет строка, вы измените свое решение?)

Офлайн

#9 Янв. 8, 2013 20:22:14

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

Помогите отсортировать

Вот я и хочу, чтоб Вы четко, конкретно, написали пример того, что в начале, а что, в результате сортировки, в итоге. Буква в букву, без расплывчатых объяснений про цифровую и буквенную часть. Так можно будет понять задачу. И сэкономить время- свое и сообщества.

Офлайн

#10 Янв. 8, 2013 20:30:42

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Помогите отсортировать

import re
ls = "WTS1234, ACDW485, WTS72, SHR728, ACDW14, SHR16, WTS16".split(', ')
spisok = sorted(ls,key=lambda e : int(re.match('.*?(\d+)',e).group(1)))
stroka = ', '.join(spisok)
print(spisok)
print(stroka)
['ACDW14', 'SHR16', 'WTS16', 'WTS72', 'ACDW485', 'SHR728', 'WTS1234']
ACDW14, SHR16, WTS16, WTS72, ACDW485, SHR728, WTS1234

Отредактировано sergeek (Янв. 8, 2013 20:36:43)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version