Skip to main content
 首页 » 编程设计

python之在函数中解包列表但在使用 MAP() 完成时不需要

2024年09月03日25飞鱼

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]