【发布时间】:2020-10-18 21:21:40
【问题描述】:
我正在尝试使用 map() 函数并将列表中的所有单词大写。
my_pets = ['sisi', 'bibi', 'titi', 'carla']
def capitalizing(a):
for item in a:
b = item.upper()
return b
print(list(map(capitalizing, my_pets)))
如果我运行这段代码,我会得到如下输出:
['S', 'B', 'T', 'C']
这是为什么呢?为什么代码只运行第一个字母并为每个单词停止?
我已经知道“for”循环/迭代不正确,无法获取所有单词,我不需要它,但是为什么这个循环会针对每个单词的第一个字母运行?
提前感谢您的帮助。
【问题讨论】:
-
@rodny9 我修正了你的代码格式,你能确认这是你的缩进吗?
-
如果你使用
map(),则不需要使用for循环 -
map 在给它(字符串元素)大写之前已经在迭代每个元素。 for item in a: 对字符串的字符进行迭代。 return b 在第一次迭代时立即返回第一个字符,在一次迭代后退出函数
-
print(list(map(str.upper, my_pets))) -
你可以使用列表理解,
[x.upper() for x in ['sisi', 'bibi', 'titi', 'carla']]
标签: python python-3.x function dictionary capitalize