map

map(function, list): 就是对list 中的每一个元素都调用function函数进行处理,返回一个map的对象

list一下就可以生成一个列表

或者for循环该对象就可以输出值

c=[2,3,4,5,6]
bb=list(map(lambda x:x+1,a))
print(bb)
[2, 3, 4, 5, 6]
a=[1,2,3,4,5]
c=[2,3,4,5,6]
bb=list(map(lambda x,y:(x+1,y+1),a,c))
print(bb)
输出:
其中x:y就是要输出的值对应了:后面的表达式
[(2, 3), (3, 4), (4, 5), (5, 6), (6, 7)]
dic=[{'id':1,'dd':''},{'id':2,'dd':''},{'id':3,'dd':''},]

haha=list(map(lambda x:(x.get('id')),dic))

print(haha)
输出:
[1, 2, 3]

zip

zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压)

a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped =list(zip(a,b)) print(zipped)
# [(1, 4), (2, 5), (3, 6)] print(list(zip(a,c)))
#[(1, 4), (2, 5), (3, 6)] print(list(zip(*zipped)))
#[(1, 2, 3), (4, 5, 6)]

filter

filter(function, list): 对list中的每一个元素都调用function进行判断,返回满足条件的元素列表。感觉它跟map很像,是的,但也有细微的差别,看下面代码就知道了。

#过滤符合条件的数据
a=[1,2,3,4,5]
data=list(filter(lambda x:x>2,a))
print(data)
输出:[3, 4, 5]

map是循环每个字段进行比较,得出的结果放在列表里:

a=[1,2,3,4,5]
data=list(map(lambda x:x>2,a))
print(data)
#输出[False, False, True, True, True]

列表生成器

当然我觉得列表生成器是很好用的工具

他能够帮我快速的构建数据

b=[1,2,3,4,5,6]
a=[ row+1 for row in b]
print(a)
[2, 3, 4, 5, 6, 7]

乍一看好像一样,但是如果你想对同一个数据构建两次呢?

b=[1,2,3,4,5,6]
a=[ (row+1,row*2) for row in b]
print(a)
[(2, 2), (3, 4), (4, 6), (5, 8), (6, 10), (7, 12)] ##############
b=[1,2,3,4,5,6]
a=[ [row+1,row*2] for row in b]
print(a)
[[2, 2], [3, 4], [4, 6], [5, 8], [6, 10], [7, 12]]
b=[1,2,3]
a=[ {'数值加1':row+1,'数值加2':row+2} for row in b]
print(a)
[{'数值加1': 2, '数值加2': 3}, {'数值加1': 3, '数值加2': 4}, {'数值加1': 4, '数值加2': 5}]

这种对queryset的循环会很爽;

# obj_list=[obj,obj,obj]

# result=[ obj.id for obj in obj_list]

# result=[ {'id':obj.id,'title':obj.title} for obj in obj_list]
values=[{'id':1,'title':'哈哈11'},{'id':2,'title':'哈哈2'},{'id':3,'title':'哈哈33'},]

dic = [{'id':row['id']} for row in values]

print(dic)
#[{'id': 1}, {'id': 2}, {'id': 3}]

当然还可以构造字典格式的:

values=[{'id':1,'title':'哈哈11'},{'id':2,'title':'哈哈2'},{'id':3,'title':'哈哈33'},]

dic = {row['id']: row  for row in values}

# dic = {row['id']:{'id':row['id'],'title':row['title']}  for row in values}
#两种表达其实都一样 print(dic)
#{1: {'id': 1, 'title': '哈哈11'}, 2: {'id': 2, 'title': '哈哈2'}, 3: {'id': 3, 'title': '哈哈33'}}

zip filter map 列表生成器的更多相关文章

  1. python一些内建函数(map,zip,filter,reduce,yield等)

    python一些内建函数(map,zip,filter,reduce,yield等) map函数 Python实际上提供了一个内置的工具,map函数.这个函数的主要功能是对一个序列对象中的每一个元素应 ...

  2. Python经常使用内置函数介绍【filter,map,reduce,apply,zip】

    Python是一门非常简洁,非常优雅的语言,其非常多内置函数结合起来使用,能够使用非常少的代码来实现非常多复杂的功能,假设相同的功能要让C/C++/Java来实现的话,可能会头大,事实上Python是 ...

  3. python学习笔记(十六)内置函数zip、map、filter的使用

    1.zip,就是把两个或者多个list,合并到一起,如果想同时循环2个list的时候,就使用zip.示例如下: l1 = ['a','b','c','e','f','g'] l2 = [,,] l3= ...

  4. python filter map reduce

    filter(function, iterable): Construct a list from those elements of iterable for which function retu ...

  5. python基础---列表生成器、迭代器等

    一.列表生成式 用来创建list的表达式,相当于for循环的简写形式 语法: [表达式 for循环 判断条件] ''' 普通写法 ''' def test(): l= [] for i in rang ...

  6. (Python)list的内建函数 filter(), map(), 和 reduce()

    这一节,我们将主要学习用于list的三个内建函数: filter(), map(), 和 reduce(). 1.filter(function, sequence)  逐个从sequence中取一个 ...

  7. Python 函数 切片 迭代 列表生成器

    函数 编写     定义一个函数要用def语句    def sum(i,n):   ⚠有冒号 返回多值     实际上是返回一个tuple 定义默认参数    默认参数的作用是简化调用   def ...

  8. Python学习——filter&map

    filter&map 1.filter函数 filter()函数用于过滤序列,过滤掉不符合条件的元素,Python3以后返回一个迭代器对象(可以用list()转化为列表查看). filter( ...

  9. 小学生都能学会的python(<lamda匿名函数,sorted(),filter(),map(),递归函数>)

    小学生都能学会的python(<<lamda匿名函数,sorted(),filter(),map(),递归函数,二分法>> 1. lambda 匿名函数 lambda 参数: ...

随机推荐

  1. centos 6.x Python2.7x安装

    centos 6.x Python2.7x安装 yum install -y gcc gcc-develwget https://www.python.org/ftp/python/2.7.14/Py ...

  2. Unity3D的三种坐标系

    来自:http://blog.csdn.net/luxiaoyu_sdc/article/details/13168497 1, World Space(世界坐标): 我们在场景中添加物体(如:Cub ...

  3. Archlinux: 优化触摸板配置

    在逛 Archlinuxcn BBS 时看到这个帖子: fcitx 输入法看不到选词,上面键盘也不见了! 等待妹子的 依云 提到了 infinality, 并且给出了这个链接: fix-infinal ...

  4. JUnit编写单元测试代码注意点小结

    用eclipse编写单元测试的时候,可以直接选中某个类,然后右键new新疆一个junit case,界面如下图1所示: 图1:新建test case 选 择图1中的JUnit Test Case,然后 ...

  5. 快速接入 Android BLE 开发的基础框架

    代码地址如下:http://www.demodashi.com/demo/12092.html ** Android BLE基础操作框架,基于回调,操作简单.包含扫描.多连接.广播包解析.服务读写及通 ...

  6. 谈一谈Http Request 与Http Response

    1.什么是HTTPRequest与HTTP Response? 我们平时打开浏览器,输入网址,点击Enter按键,然后我们想要的网页就呈现在我们的眼前,可是这个过程是怎么实现的呢? 简单来说是这样的: ...

  7. 【已解决】ckfinder_php_3.4.4 IIS 报错 无效请求

    ckfinder_php_3.4.4 IIS 报错 无效请求 (Invalid request) Apache 正常,但是在IIS环境下报错,解决方法 设置 C:\Windows\Temp 目录 给 ...

  8. Apollo配置中心解惑(一):关于一个portal管理多个环境,要求环境相互之间不影响,独立

    关于作者的回答很官方,不太懂: https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD% ...

  9. SpringBoot启动流程分析(五):SpringBoot自动装配原理实现

    SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...

  10. 机器学习6—SVM学习笔记

    机器学习牛人博客 机器学习实战之SVM 三种SVM的对偶问题 拉格朗日乘子法和KKT条件 支持向量机通俗导论(理解SVM的三层境界) 解密SVM系列(一):关于拉格朗日乘子法和KKT条件 解密SVM系 ...