遍历Python列表并大写特定字母
我在Python里有一个列表,我想要遍历这个列表,把每个不是'A'的字母都变成大写。也就是说,我想把这个列表:
['albert', 'angela', 'leo', 'bridget']
变成:
['aLBERT', 'aNGELa', 'LEO', 'BRIDGET']
6 个回答
1
这就是 str.translate
的用途:
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.maketrans
来把表示大小写字母的字符串常量转换成这个表格。表格中没有的字母会被忽略,所以如果你把 a
和 A
从表格中去掉,其他所有字母都会变成大写。
然后只需将这个翻译表应用到列表中的每个名字上。
这样做比逐个遍历每个名字并对每个字母调用 upper
方法要快,除了 a
以外的字母都会被处理。虽然Python的通用工具让这件事变得简单,但这是专门为这个任务设计的工具。
4
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。比如,有人可能会在使用某个函数时,发现它的表现和预期不一样。这时候,我们就需要仔细检查代码,看看是不是哪里出错了。
有时候,问题可能出在我们对某个概念的理解上。比如,某些函数需要特定的输入格式,如果我们没有按照要求提供,函数就可能无法正常工作。这就像是你去餐厅点菜,如果你点的菜没有在菜单上,服务员就无法给你上菜。
另外,编程中还有很多细节需要注意,比如变量的命名、数据类型的选择等等。这些看似小的地方,往往会影响到程序的运行效果。因此,作为编程小白,我们需要多加练习,慢慢积累经验,才能更好地解决这些问题。
总之,遇到问题时,不要着急,先冷静下来,仔细分析,逐步排查,通常就能找到解决办法。
[''.join(c.upper() if c != 'a' else c for c in word) for word in the_list]
3
所有现有的回答似乎都想逐个处理字符。其实,处理整个单词会更简单、更容易:
>>> the_list = ['albert', 'angela', 'leo', 'bridget']
>>> [ word.upper().replace('A', 'a') for word in the_list]
['aLBERT', 'aNGELa', 'LEO', 'BRIDGET']