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. innodb状态

    Innodb_buffer_pool_pages_data Innodb buffer pool缓存池中包含数据的页的数目,包括脏页.单位是page. Innodb_buffer_pool_pages ...

  2. JZOJ5857 【NOIP提高组模拟A组2018.9.8】没有上司的舞会

    题目 Description "那么真的有果尔德施坦因这样一个人?"他问道. "是啊,有这样一个人,他还活着.至于在哪里,我就不知道了." "那么那个 ...

  3. 廖雪峰Java10加密与安全-3摘要算法-1MD5

    1.摘要算法 1.1 摘要算法(哈希算法/Hash/数字指纹): 计算任意长度数据的摘要(固定长度) 相同的输入数据始终得到相同的输出 不同的输入尽量得到不同的输出 1.2 摘要算法目的: 验证数据和 ...

  4. PAT甲级——A1019 General Palindromic Number

    A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...

  5. Windows下shell神器

    想找一个可以在Windows平台玩命令行的东西,不想装虚拟机搞linux,所以找到两个神器 如何升级Babun中的Git Babun中默认已经集成Git,只是有可能不是最新的版本 如果只是更新Babu ...

  6. Spring Cloud Eureka集群配置及注意事项(Greenwich版本)

    Spring Cloud Eureka集群配置及注意事项(Greenwich版本) 一·概述 Spring Cloud Netflix Eureka 是一个提供服务注册与发现的套件.服务提供者只需要将 ...

  7. JasperReport生命周期3

    JasperReports的主要目的是为了在一个简单而灵活的方式创建页面为导向,准备好打印文档.下面的流程图描述了一个典型的工作流程,同时创建报表. 如在图片的生命周期具有以下明显的阶段 设计报表在这 ...

  8. jqGrid 属性、事件全集

    <html> ... <table id="list1"></table> <div id="pager1">& ...

  9. Leetcode458.Poor Pigs可怜的小猪

    有1000只水桶,其中有且只有一桶装的含有毒药,其余装的都是水.它们从外观看起来都一样.如果小猪喝了毒药,它会在15分钟内死去. 问题来了,如果需要你在一小时内,弄清楚哪只水桶含有毒药,你最少需要多少 ...

  10. LINQ(语言集成查询)

    LINQ,语言集成查询(Language Integrated Query)是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作 ...