迭代python列表并大写特定字母

2024-06-09 05:34:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中有一个列表,我想迭代并大写每个不是'a'的字母,所以将这个列表翻过来:

['albert', 'angela', 'leo', 'bridget']

进入:

^{pr2}$

Tags: 列表字母大写leoalbertpr2angelabridget
3条回答

所有现有的答案似乎都想单独操作角色。只需将单词作为一个整体来处理就更简单、更容易:

>>> the_list = ['albert', 'angela', 'leo', 'bridget']
>>> [ word.upper().replace('A', 'a') for word in the_list]
['aLBERT', 'aNGELa', 'LEO', 'BRIDGET']
[''.join(c.upper() if c != 'a' else c for c in word) for word in the_list]

这就是^{}的用途:

import string

table = string.maketrans(string.ascii_lowercase.replace('a', ''),
                            string.ascii_uppercase.replace('A', ''))

names = ['albert', 'angela', 'leo', 'bridget']

print [name.translate(table) for name in names]

translate接受一个256个字符的表,因此使用^{}将代表小写和大写字母的string constants转换为一个表。表中未出现的任何字母都将被忽略,因此删除a和{}将所有其他字母大写。

然后将翻译表应用于列表中的每个名称。

它将比迭代每个名称并对每个字母调用upper快,但是a。虽然通用的Python工具使这项工作变得容易,但这是专门为这项工作而设计的工具。

相关问题 更多 >