Python3部分函数记录(map,reduce,filter,sorted,permutations&&combinations)

经常容易忘记的一些函数用法,特此记录一下。

1.map

map():会根据提供的函数对指定的序列做映射,操作对象是指定序列里的每一个元素
格式:

map(function,iterable)
function:函数,可为匿名,返回值是一个新的列表
iterable:可迭代对象

python2:返回列表
python3:返回的是迭代器

例子:

a = (1,2,3,4,5)
la = map(str,a)
print(la)
print(list(la))

输出结果:
	<map object at 0x000001CD7A1927F0>
	['1', '2', '3', '4', '5']

2.reduce

reduce()函数会对参数中的元素进行累积;

reduce(function,iterable[,initializer])
function:函数,有两个参数
iterable:可迭代的对象
initializer:可选,初始化参数

返回值:返回函数计算的结果

from functools import reduce

add_num = lambda a, b: a + b
result = reduce(add_num, (1, 2, 5, 8, 9))
print(result)
print(reduce(lambda a, b: a + b, (1, 2, 5, 8, 9)))

输出结果:
25
25

注意:

一个函数作用在一个序列上,该函数必须要接受两个参数,

reduce把结果和序列中的下一个元素进行计算,
返回值:计算后的结果


3.filter

filter()函数:用于过滤序列,过滤掉不符合条件的元素,返回由符合条件的元素组成的新的列表

* filter(function,iterable)
* function:函数   
	* 判断函数
* iterable:序列,
	* 序列的每一个元素作为参数传递到函数进行判断,返回True,False,最后将True的元素存放到一个新的列表中
* 返回值:列表
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]

def get_num(num):
    if num % 2 == 0:
        return True
    else:
        return False

result = filter(get_num, list1)
print(list(result))

输出结果:
[2, 4, 6, 8]

4.sorted

sorted()函数对所有的可迭代的对象进行排序的操作

sorted(iterable[,cmp[,key[,reverse]]])
iterable:可迭代的对象
cmp:比较的函数,这个函数中具有两个参数,参数的值都是从可迭代的对象中取出,
   大于返回1
   小于返回-1
   等于返回0
key:比较的规则,参照

reverse:排序规则  reverse= False(升序,默认)   reverse= true(降序)
list01 = [1, 4, 7, 3, 2]
list02 = sorted(list01)
print(list02)
输出结果:
[1, 2, 3, 4, 7]
def myLen(str):
    return len(str)

list8 = ["3333333","aaa","b222","c2277","d34567"]

list9 = sorted(list8,key=myLen)
print(list9)

输出结果:
['aaa', 'b222', 'c2277', 'd34567', '3333333']

5.permutations,combinations

permutations
从n不同的元素中取m个元素,会按照特定的顺序排成一列(即数学中的排列组合做法,一共有**n!/(n-m)!**种不同的排列
格式:
iterTools.permutations(序列,排列个数)

import itertools
mylst = list(itertools.permutations([1,2,3,4],2))#12
print(mylst)
mylst = list(itertools.permutations([1,2,3,4],3))#24
print(mylst)

输出结果:
12个排列
24个排列

combinations

itertolls模块
combinations(序列,组合的数量)

import itertools

mylist = list(itertools.combinations([1,2,3,4,5],3))
print(mylist)
"""
m    n
5    5   1
5    4   5
5    3   10
5    2   10

n!/(m!*(n-m)!)种不重复的结果
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以参考以下代码实现: ```python def my_sorted(iterable, key=None, reverse=False): # 如果没有传入 key 函数,则默认使用元素本身作为排序依据 if key is None: key = lambda x: x # 按照 key 函数生成新的元素列表 new_list = [(key(x), x) for x in iterable] # 根据 key 函数生成的元素列表排序 new_list.sort(reverse=reverse) # 返回排好序的元素列表中的元素 return [x[1] for x in new_list] # 测试 lst = [5, 3, 8, 6, 2, 7, 1, 4] print(my_sorted(lst)) # [1, 2, 3, 4, 5, 6, 7, 8] lst = ["apple", "banana", "orange", "pear"] print(my_sorted(lst, key=len)) # ['pear', 'apple', 'banana', 'orange'] lst = [(1, 2), (3, 1), (2, 3), (1, 3)] print(my_sorted(lst, key=lambda x: x[1])) # [(3, 1), (1, 2), (2, 3), (1, 3)] ``` 在这个函数中,我们首先判断是否传入了 `key` 函数,如果没有传入,则使用 lambda 函数返回元素本身作为排序依据。接着,我们按照 `key` 函数生成新的元素列表,其中每个元素都是一个二元组,第一个元素为 `key` 函数生成的值,第二个元素为原来的元素。 然后,我们对这个新的元素列表进行排序,排序时根据第一个元素排序,也就是根据 `key` 函数生成的值排序。最后,我们再取出排好序的元素列表中的第二个元素,也就是原来的元素,组成新的列表返回即可。 需要注意的是,我们实现的 `my_sorted` 函数并不能处理所有的情况,比如不能处理包含不可比较的元素的列表。但是,这个函数足以模拟内置函数 `sorted` 的大部分功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值