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

1 投票
3 回答
3211 浏览
提问于 2025-04-17 02:17

我有一串单词,想把它们按字母顺序排列成一个列表:

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

看看 string.join() 这个方法。

你也可以试着用 map() 函数来简化你的代码。

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

为了让你的整个事情做得更好:

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循环并不是很符合Python的风格。对比一下:

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

for item in splitfoo:
    splitedfootmp = sorted(item)

它们的功能是一样的,但后者更清晰,也更符合Python的风格。

撰写回答