您的位置:首页 > 编程语言 > Python开发

Python 函数进阶(filter/map/json/zip)

2018-01-17 18:16 671 查看

一、函数即变量

def say(name):
print(name)
ybq = say #可以被赋值给其他变量
ybq('Amily') #调用函数

函数名:say 

函数体:第1-2行

返回值:return 后的值

函数的内存地址:当函数体被读进内存后的保存位置,它由标识符即函数名say引用,
                                                   也就是说say指向的是函数体在内存内的保存位置。

函数名加括号:  例如say(),函数的调用方法,只有见到这个括号,程序会根据
                                                   函数名从内存中找到函数体,然后执行它

函数名、函数加括号可以被当做参数传递,也可以被当做返回值return,有没有括号是两个截然不同的意思

def say(name):#定义函数
print(name)

ybq = say #可以被赋值给其他变量
ybq('Amily') #调用函数
print(say) # 打印函数的内存地址
print(type(say)) #打印函数的类型
print(id(say)) #打印函数的id

输出结果:

Amily
<function say at 0x0000000000B301E0>
<class 'function'>
11731424

二、内置函数:map/filter/sorted 

map()    

map()
函数接收两个参数,一个是函数,一个是可迭代对象(Iterable),
map
将传入的函数依次作用到序列的每个元素,并把结果作为新的可迭代对象返回

filter()  和

map()
类似,
filter()
也接收一个函数和一个序列。和
map()
不同的是,
filter()
把传入的函数依次作用于每个元素,然后根据返回值是
True
还是
False
决定保留还是丢弃该元素。

实例1:

def func(a): #求偶数
if a%2==0:
return True
else:
return False
nums = [x for x in range(11)]
all_res = []
res = map(func,nums)
res1 = filter(func,nums)
print(list(res)) #循环调用函数,然后把每次函数处理的结果,放到一个list里面返回

print(list(res1))

输出结果:

[True, False, True, False, True, False, True, False, True, False, True]
[0, 2, 4, 6, 8, 10]

实例二:(lambda  匿名函数)

res = filter(lambda x: x > 5, [12, 3, 12, 2, 1, 2, 35])
res1 = map(lambda x: x > 5, [1, 2, 3, 4, 5, 6])
print(list(res))
print(list(res1))
输出结果:

[12, 12, 35]
[False, False, False, False, False, True]

sorted()   #升序排列

sorted(  ,reverse = True)  #降序排列

 

输出结果:

三、处理 json 

Python JSON模块可以直接处理简单数据类型(string、unicode、int、float、list、tuple、dict)。

json.dumps()方法返回一个str对象,编码过程中会存在从python原始类型向json类型的转化过程,具体的转化对照如下

  需要注意的是,json字符串中的字典类型的key必须要用双引号“”json.loads()才能正常解析

 1,将Python 数据结构转换成 Json 格式(编码)  json.dumps()

indent参数是缩进的意思,它可以使数据的存储格式更优雅、可读性更强,这是通过增加一些冗余的空格进行填充的。但是在解码(json.loads())时,空白填充会被删除。

loads时会将dumps时增加的intent 填充空格去除

ensure_ascii  参数 显示中文

实例:

import json
d = {
'car':{'color':'red','price':100,'count':50},
'car1':{'color':'red','price':100,'count':50},
'car2':{'color':'red','price':100,'count':50},
'car3':{'color':'red','price':100,'count':50},
'car4':{'color':'red','price':100,'count':50},
'car5':{'color':'red','price':100,'count':50},
}
res = json.dumps(d,indent=8,ensure_ascii=False) #把list、字典转成json,indent多少缩进,ensure_ascii可以显示中文
f1 = open('f1','w',encoding='utf-8')
f1.write(res)

输出结果:

2,将Json 格式 转换成 Python 数据结构(解码) json.loads()

实例:

f1 = open('f1',encoding='utf-8')
res = f1.read()
dict_res = json.loads(res) #把json串变成python的数据类型
print(dict_res)
print(type(dict_res))

输出结果:

{'car3': {'color': 'red', 'count': 50, 'price': 100}, 'car': {'color': 'red', 'count': 50, 'price': 100}, 'car1': {'color': 'red', 'count': 50, 'price': 100},

'car5': {'color': 'red', 'count': 50, 'price': 100}, 'car2': {'color': 'red', 'count': 50, 'price': 100}, 'car4': {'color': 'red', 'count': 50, 'price': 100}}
<class 'dict'>

3,如果要处理的是文件而不是字符串,可以使用 json.dump() 和 json.load() 来编码和解码JSON数据

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: