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 参数列表:函数