For循环 - 在单词列表中按字母顺序对每个字符进行排序

时间:2011-09-14 12:32:36

标签: python for-loop

我有一个单词列表,我想按列表中的字符排序:

['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 个答案:

答案 0 :(得分:7)

很好地完成你的整个事情:

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

这里我使用的是list comprehension,这是制作这样的小片段的好方法。如果需要,您可以将其扩展为:

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

但显然,在这种情况下,列表理解更好(并且比上述更快或使用map())解决方案。

值得注意的是,使用这样的for循环并不是非常pythonic。比较:

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

for item in splitfoo:
    splitedfootmp = sorted(item)

他们都做同样的事情,但后者更清晰和pythonic。

答案 1 :(得分:4)

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

答案 2 :(得分:0)

查看string.join()

您也可以使用map()功能简化代码。