def ups(*name):
for n in name:
a=n.upper()
return a
lis=["lan","ona"]
m=list(map(ups,lis))
print(m)
在 map 中我没有完成列表的解包,但是在没有 Map() 的函数调用的情况下也是如此,(例如)必须像 ups(*lis) ,为什么是吗?
学习,谢谢
请您参考如下方法:
除了ksourav's answer ,
- 在the docs 你发现
map(function, iterable, ...)“返回 [s] 一个将函数应用到的迭代器 可迭代的每个项目,产生结果”。正如 ksourav 指出的那样 在他的回答中,您传递的项目是字符串,因此是可迭代的 他们自己 - 所以函数只返回最后一个字母 大写,比如
s = 'lan'
for char in s:
print(char.upper())
# L
# A
# N
- * 所做的(在本例中)是将传递的参数 (=string) 转换为 1 元素元组 - 您现在遍历
tuple而不是单个元素 字符串了。这就是为什么在这里,你的函数返回 整个单词大写,比如
t = ('lan',)
for element in t:
print(element.upper())
# LAN
- 顺便说一句,恕我直言,一种更易读的函数编写方式可能是
m = list(map(lambda x: x.upper(), lis))
# or even better
m = [s.upper() for s in lis]
