1、切片

切片:截取可迭代对象的部分内容(list,tuple,dict,set,str)

2、列表解析式

列表解析式可以快速的生成一个列表

不带if条件的:

格式:[expression for i in Iterable]

>>> l = [x for x in range(10)]
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

带if条件的:

>>> l = [x for x in range(10) if x%2==0]
>>> l
[0, 2, 4, 6, 8]

二维列表生成:

>>> ll=[[i for i in range(10)] for j in range(10)]
>>> ll
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]
>>> for i in ll:
... print(i)
...
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

3、map

映射(map):对可迭代对象中的每个元素执行指定的函数,第一个参数是函数名,第二个参数是Iterable(可迭代对象),返回的map属于Iterator

>>> def pow_l(x):
... return x**2
...
>>> a=map(pow_l,range(1,10))
>>> print("a 的类型:%s" %type(a))#查看类型
a 的类型:<class 'map'>
>>> from collections import Iterator
>>> from collections import Iterable
>>> print("a 是Iterator:%s" %isinstance(a,Iterator))#查看是否是Iterator
a 是Iterator:True
>>> print("a 是Iterable:%s" %isinstance(a,Iterable))#查看是否是Iterable
a 是Iterable:True
>>> for i in a:#a作为Iterable使用
... print(i,end=' ')
...
1 4 9 16 25 36 49 64 81

4、reduce

归纳函数(reduce):第一个参数是函数名,第二个参数是sequence(序列,像list,tuple,str,set,dict都可以)

效果:reduce(f,[x1,x2,x3,x4])    =    f(f(f(x1,x2),x3),x4)

>>> from functools import reduce
>>> def add_l(x,y):
... return x+y
...
>>> r_l=reduce(add_l,range(1,10))
>>> print(r_l)
45

>>> print("r_l 的类型:%s" %type(r_l))
r_l 的类型:<class 'int'>

5、filter

过滤器(filter)第一个参数是函数名,用于筛选的函数,第二个参数是Iterable(list,tuple,set,dict,str),返回一个filter且filter属于Iterator

用于过滤掉一切不需要的东西

6、lambda

只有一行的函数

正经函数:

>>> def square_l(x):
... return x*x
...
>>> square_l(2)
4

lambda:

>>> squarel=lambda x:x*x#冒号后面的一切都是对输入的操作,然后lambda x会返回结果

>>> squarel(2)
4

#配合map,filter等lambda能发挥更大作用

>>> list(map(lambda x:x*x,[1,2,3,4,5]))
[1, 4, 9, 16, 25]

>>> list(filter(lambda x:x<4,[1,2,3,4,5]))
[1, 2, 3]

Python六剑客的更多相关文章

  1. 一句话搞定python六剑客

    六剑客 一行搞定六剑客:三个函数:map filter reduce + lambda 切片 推导列表 python最有特点的一行代码,所有代码均可以借用一行代码(目标) 1.map(函数,列表或者字 ...

  2. python六剑客:map()、lambda()、filter()、reduce()、推导类表、切片

    一:map():映射 map()有两个参数,一个函数,一个序列,序列中每一个元素都会做为参数传给前边的函数,然后生成新的列表, 第二个参数必须用一个序列:元祖,列表,字符串 >>> ...

  3. python 练习用python六剑客实现一个统计数字的个数,六剑客:(map、lambda、reduce、filter、切片、推到列表)

    统计一共有几个数字 s="sdfa45ads46723" #lambda >>> filter(lambda x:x.isdigit(),list(s)) ['4 ...

  4. python六十七课——网络编程(基础知识了解)

    网络编程: 什么是网络编程? 网络:它是一种隐形的媒介:可以将多台计算机使用(将它们连接到一起) 网络编程:将多台计算机之间可以相互通信了(做数据交互) 一旦涉及到网络编程,划分为两个方向存在,一方我 ...

  5. python(六)内置函数

    一.函数知识补充 函数不设置值,默认返回None:函数中参数都是按引用传递,函数里修改了参数,原始参数也会修改. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 ...

  6. python(六):面型对象--类的特殊方法

    一.跟实例创建和执行有关的 __new__.__init__.__call__. 类加括号调用了__init__方法来创建一个实例对象.这一过程分成了两步: 类调用__new__来创建实例对象,__n ...

  7. Python(六) Python 函数

    一.认识函数 help(方法名字)  help(round) 1.功能性 2.隐藏细节 3.避免编写重复的代码 4.组织代码 自定义函数 二.函数的定义及运行特点 # 递归 def sum_num(n ...

  8. 吾八哥学Python(六):运算符与表达式

    上篇简单学习了数学运算符,今天来学习下完整的Python运算符与表达式,具体看下面的表格吧! 表1 运算符与它们的用法 运算符 名称 说明 例子 + 加 两个对象相加 3 + 5得到8.’a’ + ‘ ...

  9. python六十四课——高阶函数练习题(三)

    案例五:求两个列表元素的和,返回新列表lt1 = [1,2,3,4]lt2 = [5,6]效果:[6,8,10,12] lt1=[1,2,3,4] lt2=[5,6] print(list(map(l ...

随机推荐

  1. Codeforces #454 div1 C party(状态压缩bfs)

    题意: 给你N个点的一幅图,初始图中有M条边,每次操作可以使得一个点连接的所有点变成一个团,问你最少多少次操作可以使得整个图变成一个团. 解法: 因为N很小 所以我们可以二进制压缩来表示一个点与其他点 ...

  2. Codeforce 567A - Lineland Mail

    All cities of Lineland are located on the Ox coordinate axis. Thus, each city is associated with its ...

  3. 【转载】JS导出CSV文件

    转自:http://www.cnblogs.com/dengnan/p/3990211.html 通过自己实际测试有以下几种方法 方法一通过a标签实现,把要导出的数据用“\n”和“,”拼接成一个字符串 ...

  4. c# Gridview 自动分页功能 解决后面页面不显示问题

    操作步骤: 操作如下: 1.更改GrdView控件的AllowPaging属性为true. 2.更改GrdView控件的PageSize属性为 任意数值(默认为10) 3.更改GrdView控件的Pa ...

  5. ANDROID开发之问题积累及解决方案(三)

    1.dexDebug ExecException finished with non-zero exit value 2需要在gradle中配置下面的代码,原因是引用了多个libraries文件 de ...

  6. python3读取、写入、追加写入excel文件

    由于excel版本不同,python处理的时候选择的库页不同. 一.操作对应版本表格需要用到的库 1.操作xls格式的表格文件,需要用到的库如下: 读取:xlrd 写入:xlwt 修改(追加写入):x ...

  7. 并查集-G - 食物链

    G - 食物链 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A.现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种 ...

  8. js面向对象的程序设计 --- 中篇(创建对象) 之 工厂模式和 构造函数模式

    创建对象 虽然Object构造函数或对象字面量都可以用来创建单个对象,但这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量重复代码. ·工厂模式 工厂模式是一种广为人知的设计模式,这种模式 ...

  9. 【转】C# Application.DoEvent()的作用

    Application.DoEvents()的作用:处理所有的当前在消息队列中的Windows消息. private void button1_Click(object sender, EventAr ...

  10. elasticSearch 起步(CentOS7 success)

    安装和启动 这里使用docker进行安装的 docker pull elasticsearch 然后使用 docker run -e ES_JAVA_OPTS="-Xms256m -Xmx2 ...