Цикл For - сортировка каждого символа в алфавитном порядке в списке слов - PullRequest
1 голос
/ 14 сентября 2011

У меня есть список слов, которые я хотел бы отсортировать по символам в списке:

['alumni', 'orphan', 'binge', 'peanut', 'necktie']

Я хотел отсортировать их по алфавиту, чтобы они оказались в списке:

['ailmnu', 'ahnopr', 'begin', 'aenptu', 'ceeiknt']

Пока мой код смущает:

for i in range(len(splitfoo)):
    splitedfootmp = sorted(splitfoo[i])

, который разбивает слова на символы вроде этого: ['a', 'i', 'l', 'm', 'n', 'u'] но я не могу понять, как превратить его обратно в ['ailmnu']

Есть ли способ сделать это, не проходя через все неприятности? Заранее спасибо!

Ответы [ 3 ]

7 голосов
/ 14 сентября 2011

Чтобы сделать все это красиво:

items = ['alumni', 'orphan', 'binge', 'peanut', 'necktie']
sorted_items = ["".join(sorted(item)) for item in items]

Здесь я использую список , который является хорошим способом создания небольших фрагментов вроде этого. Вы можете, если хотите, расширить его до:

items = ['alumni', 'orphan', 'binge', 'peanut', 'necktie']
sorted_items = []
for item in items:
    sorted_items.append("".join(sorted(item)))

Но ясно, что понимание списка - более хорошее (и более быстрое, чем приведенное выше или использующее map()) решение в этом случае.

Стоит также отметить, что использование такого цикла for не слишком питонно. Для сравнения:

for i in range(len(splitfoo)):
    splitedfootmp = sorted(splitfoo[i])

for item in splitfoo:
    splitedfootmp = sorted(item)

Они оба делают одно и то же, но последний более ясен и питоничен.

4 голосов
/ 14 сентября 2011
In [1]: ''.join(['a', 'i', 'l', 'm', 'n', 'u'])
Out[1]: 'ailmnu'

Вот полная программа:

In [2]: l = ['alumni', 'orphan', 'binge', 'peanut', 'necktie']

In [3]: map(lambda w: ''.join(sorted(w)), l)
Out[3]: ['ailmnu', 'ahnopr', 'begin', 'aenptu', 'ceeiknt']
0 голосов
/ 14 сентября 2011

Посмотрите на string.join().

Вы также можете упростить свой код, используя функцию map().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...