gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:48:13 26 4
gpt4 key购买 nike

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]

关于python - 在函数中解包列表但在使用 MAP() 完成时不需要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58611994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com