python中的map函数
map是python中的内置函数,会根据提供的函数对指定的序列做映射。
map的函数格式是map(function,iterable,...) 第一个参数接受函数,第二个接受可迭代序列,返回的是一个集合。
举两个实例:
del square(x):
return x ** 2
map(square,[1,2,3,4,5])
结果如下:
[1,4,9,16,25]
1
2
3
4
5
6
7
8
map(lambda x, y: x+y,[1,3,5,7,9],[2,4,6,8,10])
结果如下:
[3,7,11,15,19]
1
2
3
4
5
还可以实现简单的类型转化。
将字符串转换为list:map(int,'1234')
Python 使用 lambda 来创建匿名函数
lambda [arg1 [, arg2, ..., argn]] : expression
其一,作为函数对象,lambda 可赋值给一个变量,再利用变量来调用该函数f = lambda x : x + 1
其二,作为其他函数的返回值,返回函数:def f(x, y) return lambada x, y : x ** y
reduce函数。此时lambda函数用于指定列表中两两相邻元素的结合条件。
python functools.cmp_to_key使用
比较函数意为一个可调用对象,该对象接受两个参数并比较它们,结果为小于则返回一个负数,相等则返回零,大于则返回一个正数。key function 则是一个接受一个参数,并返回另一个用以排序的值的可调用对象。通过这个函数可以把一个 cmp 函数(它支持两个参数,排序过程是一个对比过程,对比在两个元素之间进行)变成一个 key 函数,从而可以实现自定义排序规则。
class Solution:
def largestNumber(self, nums: List[int]) -> str:
import functools
nums_str = list(map(str, nums))
compare=lambda x,y: 1 if x+y<y+x else -1
nums_str.sort(key=functools.cmp_to_key(compare))
res=''.join(nums_str)
if res[0]=='0':
res='0'
return res
将列表字符串化,然后通过lambda函数实现排序,再进行拼接。