序列函数:

  • enumerate: for循环时记录索引,逐个返回元组(i, item)
  • sorted:返回新的有序列表
  • zip:压缩将多个序列的对应位置的元素组成元组
  • zip(*元组列表): 解压缩
  • reversed 逆序迭代,可配合list返回逆序列表
  • update 合并字典
  • hash 函数,只存在唯一值,只有这种才能作为键
lis = ['a','b','c']
for i,item in enumerate(lis):
print(str(i)+'-'+item) 0-a
1-b
2-c
list1 = ['a','b','c','d','e','f','g']
list2 = range(5)
list3 = ['A','B','C']
list4 = zip(list1,list2,list3) # 压缩过程
print(list(list4))
list5 = zip(*list4) # 解压缩过程
print(list(list5))
# 注意,zip返回的本质是一个生成器,如果利用list,或其他方法迭代后,生成器就是空的了 [('a', 0, 'A'), ('b', 1, 'B'), ('c', 2, 'C')]
[]
list1 = ['a','b','c','d','e','f','g']
print(list(reversed(lis1))) # 逆序迭代 ['g', 'f', 'e', 'd', 'c', 'b', 'a']
list1 = {1:'a',2:'b'}
list1[3]='c'
print(list(list1.keys()))
print(list(list1.values())) [1, 2, 3]
['a', 'b', 'c']
list1 = {1:'a',2:'b'}
list2 = {3:'c',4:'d'}
list1.update(list2)
print(list1) {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
# 多个列表组合字典
list1 = range(5)
list2 = list(reversed(list1))
dic = dict(zip(list1,list2))
print(dic) {0: 4, 1: 3, 2: 2, 3: 1, 4: 0}

高级特性:

1.列表推导式:[exp for item in collection if condition]

result = [i for i in range(20) if i%2 == 0]
print(result) [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
# 全大写转换
result = ['a','b','c','d']
list1 = [i.upper() for i in result]
print(list1) ['A', 'B', 'C', 'D']

2.函数列表(列表中的每一个元素都是函数)

3.匿名函数 lambda

  • 没有函数名
  • 单条语句组成
  • 语句执行结果就是返回值
  • 可用作sort的key函数
f = lambda x:x*2
print(f(2)) list1 = ['aaaaa','bbb','cccc','d']
list1.sort(key = lambda x:len(x))
print(list1) 4
['d', 'bbb', 'cccc', 'aaaaa']

4.生成器 generator

  • 构造可迭代对象
  • 每次返回一个值,直到下次调用时,再继续
def gen_test():
for i in range(3):
yield i
gen = gen_test()
print(type(gen))
for i in gen:
print(i) <class 'generator'>
0
1
2

高阶函数:

  • 函数本身可以赋值给变量
  • 允许将函数本身作为参数传入另一个函数
  • 允许返回一个函数

1.map/reduce

list1 = [1,2,3,4]
m = map(lambda x:x**2,list1)
for i in m:
print(i) 1
4
9
16
# 全浮点型转换
list1 = [1,2,3,4]
m = map(float,list1)
for i in m:
print(i) 1.0
2.0
3.0
4.0
from functools import reduce
# 累加
list1 = [1,2,3,4]
m = reduce(lambda x,y:x+y,list1)
print(m) 10

2.筛选序列 filter(根据返回值True,False保留或丢弃)

list1 = [1,2,3,4,5]
m = filter(lambda x:x>3,list1)
for i in m:
print(i) 4
5

Python序列函数、高级特性及高阶函数的更多相关文章

  1. python高级特性和高阶函数

    python高级特性 1.集合的推导式 列表推导式,使用一句表达式构造一个新列表,可包含过滤.转换等操作. 语法:[exp for item in collection if codition] if ...

  2. Python中匿名函数与内置高阶函数详解

    大家好,从今天起早起Python将持续更新由小甜同学从 初学者的角度 学习Python的笔记,其特点就是全文大多由 新手易理解 的 代码与注释及动态演示 .刚入门的读者千万不要错过! 很多人学习pyt ...

  3. python高级 之(三) --- 高阶函数

    高阶函数 map函数 简介 """ map(func,*iterables) 参数:一个是函数.一个是序列 作用:将序列中的元素依此作用于函数,将函数运行结果返回 存放于 ...

  4. Python复习笔记(四)高阶函数/返回函数/匿名函数/偏函数/装饰器

    一.map/reduce map map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次 作用到序列的每个元素,并把结果作为新的Iterator返回. reduce r ...

  5. python之路(4)高阶函数和python内置函数

    前言 函数式编程不用变量保存状态,不改变变量 内置函数 高阶函数 把函数当作参数传给另一个对象 返回值中包含函数 使用的场景演示: num_test = [1,2,10,5,8,7] 客户说 :对上述 ...

  6. 海选与包装,Python中常用的两个高阶函数(讲义)

    一.filter(function, iterable) - 过滤("海选") # 判断落在第一象限的点[(x1, y1), (x2, y2)...] points = [(-1, ...

  7. 函数高阶(函数,改变函数this指向,高阶函数,闭包,递归)

    一.函数的定义方式 1.函数声明方式 function  关键字(命名函数) 2.函数表达式(匿名函数) 3.new  Function( ) var  fn = new  Function(‘参数1 ...

  8. Python进阶内容(一)--- 高阶函数 High order function

    0. 问题 # 本文将围绕这段代码进行Python中高阶函数相关内容的讲解 # 文中所有代码的兼容性要求为:Python 3.6,IPython 6.1.0 def addspam(fn): def ...

  9. Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊

    函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...

随机推荐

  1. ASP.NET CORE Swagger

    Package 添加并配置Swagger中间件 将Swagger生成器添加到方法中的服务集合中Startup.ConfigureServices: public void ConfigureServi ...

  2. One point compactification

    Theorem (One point compactification) Any locally compact space \(X\) can be embedded in another comp ...

  3. Introduction to boundary integral equations in BEM

    Boundary element method (BEM) is an effective tool compared to finite element method (FEM) for resol ...

  4. LAMP编译安装部分

    # yum install -y apr-devel apr-util-devel pcre-devel # wget http://mirror.bit.edu.cn/apache/httpd/ht ...

  5. Java中常见的排序方式-选择排序(升序)

    [基本思想] 假设数组为int[] a = { 49, 38, 65, 97, 76, 13, 27 },数组元素个数为7个. 第1轮比较:先是a[0]与a[1]比较,大于则先交换,再比较a[0]和a ...

  6. IDEA控制台问题:java lang OutOfMemoryError:PermGen space

    PermGen space的全称是Permanent Generation space,是指内存的永久保存区域. OutOfMemoryError: PermGen space从表面上看就是内存溢出, ...

  7. 组合数的简单求法(dfs)

    组合数的具体应用可以参考这个例子:https://www.cnblogs.com/FengZeng666/p/10496223.html 下面这段代码可以作为求组合数的固定套路或者公式: #inclu ...

  8. Linux下java开发环境配置总结

    1 安装JDK,卸载以前的jdk,安装jdk1.8 : 参考:http://www.jb51.net/os/RedHat/73016.html 需要注意配置环境变量中的路径要和当前安装的jdk路径一致 ...

  9. 无法启动 Maya 集成的 qt designer 的解决方法和原因 以及 中英文切换

    无法启动 Maya 集成的 qt designer 的解决方法和原因 以及 中英文切换 前言: Maya 集成了 PySide,同时集成了qt designer,在 Maya 的安装目录下的 bin ...

  10. a标签点击不跳转的几种方法

    a标签点击不跳转的几种方法 1.onclick事件中返回false <a href="http://www.baidu.com" onclick="return f ...