1.切片

L[0:3]表示,从索引0开始,直到索引3为止,但是不包括索引3。如果第一个索引是0,还可以省略L[:3]

倒数切片:L[-n:-1],-1是倒数第一个元素,L[-n:-1]不包括倒数第一个元素。L[-n:]表示取后n个数。

L[:10:2]:前十个数,每两个取一个。

元组和字符串都可以用切片操作。

2.迭代

因为dict的存储不是按照list的方式顺序排列的,所以迭代出的结果顺序很可能不一样。

默认情况下,dict迭代的是key,如果要迭代value,可以用:

for value in d.values():  #迭代value
for k,v in d.items(): #同时迭代key和value

判断一个对象是可迭代对象,通过collections模块的Iterable类型判断:

from collections imoprt Iterable
isinstance('abc',Iterable) #str是否可迭代
isinstance([1,2,3],Iterable) #list是否可迭代
isinstance(123,Iterable) #interger是否可迭代

要对list实现类似Java那样的下标循环:Python内置的enumerate函数可以吧list变成索引-元素对,这样可以在for循环中同时迭代索引和元素本身。

for i,value in enumerate(['A',‘B’,'C']):
print(i,value)

3.列表生成式

如:

[ x*x for x in range(1,11)]
#for循环后面加上if判断,筛选出符合要求的
[ x*x for x in range(1,11) if x%2==0]
#使用两层循环,生成全排列
[m+n for m in 'ABC' for n in 'XYZ']

4.生成器与迭代器(*****后面了解清楚*****)

如果列表元素可以按照某种算法推断出来,那么我们可以在循环过程中不断推算出后续的元素,这样不必创建完整的list,从而节省大量的空间,Python中,边循环边计算的机制,称为:generator

创建列表生成式的方法:

  • 把列表生成式的[]改成():使用for循环来调用

5.函数式编程:抽象程度很高的编程范式,允许把函数本身作为参数传入另外函数,还允许返回一个函数!

Python对函数式编程提供部分支持,由于Python允许使用变量,因此,Python不是纯函数式编程语言。

abs(-10)是函数调用,而abs是函数本身。函数本身可以赋值给变量,即变量可以指向函数。

函数名:其实就是指向函数的变量,对于abs()这个函数,完全可以吧函数名abs看成变量,它指向一个可以计算绝对值的函数。

高阶函数:

def add(x,y,f):
return f(x)+f(y)

sorted:

对于两个元素x,y,如果认为x<y,则返回-1,如果x==y,则返回0,如果认为x>y,则返回1,这样排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。

sorted也是一个高阶函数,它可以接收一个key来实现自定义的排序,如按照绝对值大小排序:

key指定的函数将作用于list的每一个元素上,并且根据key函数返回的结果排序。

6.返回函数

函数作为返回值

 ******闭包*****(以后了解清楚)

匿名函数:lambda 参数列表:函数

7.装饰器(Decorator)******后面补充******

8.偏函数

廖雪峰Python总结2的更多相关文章

  1. 廖雪峰Python电子书总结

    函数 1.注意:函数的默认参数必须指向不可变对象 未修改前: def add_end(L=[]): L.append('END') return L 存在的问题:如果连续调用多次,会出现多个 'END ...

  2. 廖雪峰python教程的第一个疑问

    函数的参数一节中提到: def add_end(L = []); L.append('END') return L 正常调用add_end时(也就是有参数传入时): >>> add_ ...

  3. 廖雪峰Python实战day1

    一.按照廖雪峰的教程,安装开发环境,问题不大. 1.异步框架aiohttp:$pip3 install aiohttp 2.前端模板引擎jinja2:$ pip3 install jinja2 3.安 ...

  4. 【python】廖雪峰python教程学习--基础

     No1: 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的 No2: 用r''表示''内部的字符串默认不转义 No3: 以'''开头,敲回车可以换行 No4: 布尔 ...

  5. 廖雪峰 ---- Python教程

    这是小白的Python新手教程,具有如下特点: 中文,免费,零起点,完整示例,基于最新的Python 3版本. Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学 ...

  6. 廖雪峰Python学习笔记——类和实例

    Class MyList(list): __metaclass__ = ListMetaclass #它表示在创建MyList这个类时,必须通过 ListMetaclass这个元类的LIstMetac ...

  7. 廖雪峰Python学习笔记——序列化

    序列化 定义:程序运行时所有变量都存在内存中,把变量从内存中变成可存储或可传输的过程称为序列化pickling,在其他语言中称为serialization,marshalling,flattening ...

  8. 廖雪峰Python学习笔记——使用元类

    元类(MetaClasses) 元类提供了一个改变Python类行为的有效方式. 元类的定义是“一个类的类”.任何实例是它自己的类都是元类. class demo(object): pass obj ...

  9. 廖雪峰Python笔记

    △命令行模式和Python交互模式 在Windows开始菜单选择“命令提示符”,就进入到命令行模式,它的提示符类似C:\>:在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就 ...

  10. 廖雪峰Python总结5

    1.错误,调试和测试 程序编写造成了bug(必须修复) 用户输入出错(通过检查用户输入) 异常:无法在程序运行过程中预测的.异常是必须被处理的,否则程序会因为各种问题终止并且退出 1.try: try ...

随机推荐

  1. 第四章 Odoo 12 开发之模块继承

    Odoo 的一个强大功能是无需直接修改底层对象就可以添加功能.这是通过其继承机制来实现的,采取在已有对象之上修改层来完成.这种修改可以在不同层上进行-模型层.视图层和业务逻辑层.我们创建新的模块来做出 ...

  2. C#可扩展编程之MEF(一):MEF简介及简单的Demo

      在文章开始之前,首先简单介绍一下什么是MEF,MEF,全称Managed Extensibility Framework(托管可扩展框架).单从名字我们不难发现:MEF是专门致力于解决扩展性问题的 ...

  3. 【JSOI2018】绝地反击

    题面 50pts 首先当然是二分答案\(mid\), 对于每一个点,以它为圆心的圆,交上攻击轨道: 那么这个点到攻击轨迹的可达范围就是一段圆弧. 怎么求这段圆弧呢? 我们知道圆弧可以用其两端点对于圆心 ...

  4. eclipse中运行java程序

    1 package ttt; public class Testttt { public static void main() { Person p =new Person(); p.name=&qu ...

  5. 浅谈Python小数据池

    什么是小数据池 小数据池是python中提高效率的一种方式,固定数据类型的相同值使用同一内存地址. id 用于获取开辟空间的内存地址 代码块 一个文件,一个模块,一个函数,一个类,终端中的每一行代码都 ...

  6. log4j 配置文件参数说明

    log4j 框架配置文件常用参数说明 %d 时间(-- ::,) %-5p 日志级别(INFO/DEBUG) %10c 包名(com.xxx.xxx.business.logging) %M 执行的方 ...

  7. TZOJ 4021 Ugly Problem(线段树区间子段最大)

    描述 给定一个序列A[0],A[1],…A[N-1],要求找到p0,p1,p2,p3使得A[p0]+A[p0+1]+…+A[p1] + A[p2]+A[p2+1]+…+A[p3]最大(0<=p0 ...

  8. logo 编程

    玩了一把logo语言,好学易懂,小朋友有兴趣是个挺不错的玩意.当然也可用于一些机器人等控制 apt install ucblogo ;一个多边形 l 边长 n 边数 to sj :l :n repea ...

  9. jeecms怎么修改后台访问路径?

    1,修改后台访问路径: 如:http://localhost:8080/jeeadmin/jeecms/login.do 改:http://localhost:8080/hailou/index.do ...

  10. 链接的属性href=“?” ?该些什么及优缺点

    <a onclick="{jscode}">是很常见的一种js运用方式,使用时经常会加一个href=“###”即<a onclick="{jscode} ...