Python 函数进阶(filter/map/json/zip)
一、函数即变量
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数据
写入json 格式的文件
f1 = open('f1','w',encoding='utf-8')
json.dump(d,f1,ensure_ascii=False,indent=4)
#自动帮你写入文件,第一个参数是数据,第二个是文件对象
读取文件
f1 = open('f1',encoding='utf-8')
print(json.load(f1))
四、zip()函数
zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。
若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压)。
实例1:
a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b)
print(list(zip(a,b)))#强制类型转换输出
print(zip(a,b))#输出zip 对象
print(list(zip(*zipped)))#解压zip 对象
输出结果:
[(1, 4), (2, 5), (3, 6)]
<zip object at 0x0000000001157E08>
[(1, 2, 3), (4, 5, 6)]
实例2:
id = [1,2,3,4]
name = ['car1','car2','car3']
for id,name in zip(id, name):
print(id,name)
输出结果:
1 car1
2 car2
3 car3
Python 函数进阶(filter/map/json/zip)的更多相关文章
- Python 函数lambda(), filter(), map(), reduce()
1 filter filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String ...
- Python之匿名函数(filter,map,reduce)
参考博客:Python匿名函数详解--http://blog.csdn.net/csdnstudent/article/details/40112803 Python内建函数之——filter,map ...
- 小学生都能学会的python(<lamda匿名函数,sorted(),filter(),map(),递归函数>)
小学生都能学会的python(<<lamda匿名函数,sorted(),filter(),map(),递归函数,二分法>> 1. lambda 匿名函数 lambda 参数: ...
- Python内置函数之filter map reduce
Python内置函数之filter map reduce 2013-06-04 Posted by yeho Python内置了一些非常有趣.有用的函数,如:filter.map.reduce,都是对 ...
- Python学习(五)函数 —— 内置函数 lambda filter map reduce
Python 内置函数 lambda.filter.map.reduce Python 内置了一些比较特殊且实用的函数,使用这些能使你的代码简洁而易读. 下面对 Python 的 lambda.fil ...
- Python2.7学习笔记-定义函数、filter/map/reduce/lambda
我把写的代码直接贴在下面了,注释的不是很仔细,主要是为了自己复习时方便查找,并不适合没有接触过python的人看,其实我也是初学者. #定义函数 def my_abs(x): if x>=0: ...
- lambda匿名函数,sorted(),filter(),map(),递归函数
1.lambda匿名函数 为了解决一些简单的需求而设计的一句话函数 #计算n的n次方 def func(n): return n**n print(func(10)) f = lambda n: n* ...
- Python—函数进阶篇
lambda表达式(匿名函数表达式) 作用:创建一个匿名函数对象.同def类似,但不提供函数名. 语法:lambda [形参1,形参2,...] : 表达式 语法说明 lambda 只是一个表达式,它 ...
- 匿名函数 sorted() filter() map() 递归函数
一. lambda() 匿名函数 说白了,从字面理解匿名函数就是看不见的函数,那么他的看不见表现在哪里呢? 其实就是在查询的时候他们的类型都是lambda的类型所以叫匿名,只要是用匿名函数写的大家 ...
随机推荐
- Win32 API UART编程
下面是一个使用Win32 API进行UART编程的简单示例. #include <windows.h> #include <stdio.h> int WINAPI WinMai ...
- 较详细的介绍JNI
JNI其实是Java Native Interface的简称,也就是java本地接口.它提供了若干的API实现了和Java和其他语言的通信(主要是C&C++).也许不少人觉得Java已经足够强 ...
- Shadow Map 原理和改进 【转】
http://blog.csdn.net/ronintao/article/details/51649664 参考 1.Common Techniques to Improve Shadow Dept ...
- Razor语法(五)
约定:客户端代码称C域,服务器端代码称S域 0. 基本原则Razor模板默认是C域(与php.aspx相同)任何C域都可以内嵌S域行内S域不可内嵌C域,多行S域可内嵌任何C域@符号是关键符号,使用@从 ...
- spring java 方式配置JedisPool Bean
来自一个开源项目https://git.oschina.net/geek_qi/ace-cache package com.ace.cache.config; import com.ace.cache ...
- 学java得这样学,学习确实也得这样
引言 软件开发之路是充满荆棘与挑战之路,也是充满希望之路.Java学习也是如此,没有捷径可走.梦想像<天龙八部>中虚竹一样被无崖子醍醐灌顶而轻松获得一甲子功力,是很不现实的.每天仰天大叫& ...
- 30个iPhone健康应用帮助你保持身体健康
来源:GBin1.com 技 术进步的最大缺陷是,现在大部分人花费大量时间在他们的电脑前和移动设备上.他们没有任何时间锻炼和顾及他们的健康.这些科技产品让我们变得慵 懒,甚至 让我们愿意花费闲暇的时间 ...
- STL_算法_区间的比較(equal、mismatch、 lexicographical_compare)
C++ Primer 学习中.. . 简单记录下我的学习过程 (代码为主) //全部容器适用 equal(b,e,b2) //用来比較第一个容器[b,e)和第二个容器b2开头,是否相等 e ...
- HTML+JavaScript实现链式运动特效
在学习js的过程中,发现这家伙做特效真是不错,尽管说眼下水平还不够,只是也能写点简单的效果. 今天分享一个简单的运动框架.然后利用这个框架实现简单的链式运动特效. 1.move.js 在运动框架中.主 ...
- 【转】C语言中不同的结构体类型的指针间的强制转换详解
C语言中不同类型的结构体的指针间可以强制转换,很自由,也很危险.只要理解了其内部机制,你会发现C是非常灵活的. 一. 结构体声明如何内存的分布, 结构体指针声明结构体的首地址, 结构体成员声明该成员在 ...