在函数中解包列表但在使用 MAP() 完成时不需要?
Unpacking of list in function but not needed when its done with MAP()?
def ups(*name):
for n in name:
a=n.upper()
return a
lis=["lan","ona"]
m=list(map(ups,lis))
print(m)
在地图中我没有对列表进行解包,但是在没有 Map() 的函数调用的情况下也是如此,(例如)必须像 ups(*lis)
,这是为什么?
学习,谢谢
star()args 表示可变数量的 arguments.so 基本上你的功能可以采用可变数量的 arguments.On 另一手地图函数采用函数和列表作为参数和该函数在作为 argument.so 传递的列表的每个元素上调用 如果您不在您定义的函数中使用“”,那么它将在 lis(当您传递给 map 函数时)并对其进行迭代,return for 循环中每个字符串的唯一最后一个字母 uppercase.Because 将迭代传递的元素,但 return 仅最后一个像你一样的元素 returning only a.
除了,
- 在the docs
你会发现
map(function, iterable, ...)
"Return[s] 一个将函数应用于
可迭代的每个项目,产生结果”。正如 ksourav 指出的
在他的回答中,您传递的项目是字符串,因此是可迭代的
他们自己 - 所以函数只是 returns 中的最后一个字母
大写,例如
s = 'lan'
for char in s:
print(char.upper())
# L
# A
# N
- (在本例中)* 所做的是将传递的参数 (=string) 转换为 1 元素元组 -
您现在遍历
tuple
而不是单个元素
字符串了。这就是为什么在这里,你的函数 returns
整个单词大写,如
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]
def ups(*name):
for n in name:
a=n.upper()
return a
lis=["lan","ona"]
m=list(map(ups,lis))
print(m)
在地图中我没有对列表进行解包,但是在没有 Map() 的函数调用的情况下也是如此,(例如)必须像 ups(*lis)
,这是为什么?
学习,谢谢
star()args 表示可变数量的 arguments.so 基本上你的功能可以采用可变数量的 arguments.On 另一手地图函数采用函数和列表作为参数和该函数在作为 argument.so 传递的列表的每个元素上调用 如果您不在您定义的函数中使用“”,那么它将在 lis(当您传递给 map 函数时)并对其进行迭代,return for 循环中每个字符串的唯一最后一个字母 uppercase.Because 将迭代传递的元素,但 return 仅最后一个像你一样的元素 returning only a.
除了
- 在the docs
你会发现
map(function, iterable, ...)
"Return[s] 一个将函数应用于 可迭代的每个项目,产生结果”。正如 ksourav 指出的 在他的回答中,您传递的项目是字符串,因此是可迭代的 他们自己 - 所以函数只是 returns 中的最后一个字母 大写,例如
s = 'lan'
for char in s:
print(char.upper())
# L
# A
# N
- (在本例中)* 所做的是将传递的参数 (=string) 转换为 1 元素元组 -
您现在遍历
tuple
而不是单个元素 字符串了。这就是为什么在这里,你的函数 returns 整个单词大写,如
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]