Python现在应用领域越来越广泛,在写的同时,养成良好习惯记录是非常有意义的,大家都知道Python入门容易精通很难,今天分享一下有意思的代码。
0x01
想必我们经常有用到过数组,但这样的数据结构一定涉及到排序,取最大值,取最小值,下面就是一个小栗子
import heapq
nums = [10, 22, 44, 55, 66, 77, 888, 123, 4456]
max_num = heapq.nlargest(5, nums)
print("最大值: ", max_num)
min_num = heapq.nsmallest(5, nums)
print("最小值: ", min_num)
# 最大值: [4456, 888, 123, 77, 66]
# 最小值: [10, 22, 44, 55, 66]
“heapq”这是一个很好用的内建库,尤其是在我们取一些列表的头部数据,比如最大几个,最小几个经常用到,很是实用。
0x02
排序和查询,长的数据结构里面(列表,字典)都会有查询,过滤的需求,有时候,我们需要从很长的一个列表里面,找出某一个或者某一类元素,怎么办?不用慌,Python为我们准备一系列的高阶函数。 filter -- map -- reduce 这里我们拿filter做演示
list_temp = ['fjxc', 'lxoh', 'enhf', 'tkkj', 'ofpp', 'tfyq', 'sqlr', 'tqeo', 'exyu', 'cips', 'sjcc', 'lrxj', 'pqhp', 'egiz',
'jjur', 'pwhs', 'efrg', 'qjtf', 'mvnu', 'uhgn']
filter_gen = (filter(lambda x:x.startswith('jj'), list_temp))
print(list(filter_gen))
# 输出: ['jjur']
嘚啵:lambda是一个非长简洁的函数表达方式,短小精悍,加上配合filter一起使用,漂亮!上述示例我们通过字符串的方法“startswith”内置函数非常方便的过滤出列表里面我们需要的数据。PS(filter是生成的一个迭代器哦)
import re
regx_filter = filter(lambda x:re.findall(u'(jj)', x), list_temp)
print(list(regx_filter))
# 输出: ['jjur']
# 如果列表里面是一个字典
temp_dict_list = [{'abc':200, 'edf': 300}, {'cff': 400, 'efg': 500}]
# [{'abc': 200, 'edf': 300}, {'cff': 400, 'efg': 500}]
regx_filter1 = filter(lambda x: 'cff' in x.keys(), temp_dict_list)
print(list(regx_filter1))
# 输出: [{'cff': 400, 'efg': 500}]
goodlucky!