1.切片功能:相似于java中的split方法。对list或者triple中几个值进行取出的过程。java
L = ['a','b','c','d'] L[0:3] = ['a','b','c'] #下标从0开始,取到第n-1个元素 L[-2:] =['c','d'] #倒序取值python
2.迭代(循环)功能:python中的可遍历对象只要是可迭代对象,例如list,triple,dict,字符串函数
dict默认迭代的是key值,也能够循环value值。for value in d.values() 同时迭代 for k,v in d.items()对象
判断是否为可迭代对象:ip
from collections import Iterable内存
isinstance('abc',Iterable) #字符串是否可迭代 True字符串
isinstance([1,2,3],Iterable) #list是否可迭代 Truegenerator
isinstance(123,Iterable) #整数是否可迭代 Trueit
带下标输出: io
for i, value in enumerate(['A','B','C'])
print(i,value)
0 A 1 B 2 C
3.列表生成式
生成简单的list能够用 list(range(1,11)) 通用表达式为: [x for x in range(1,11)]
# 添加if判断: [x * x for x in range(1,11) if x % 2 ==0]
#两层循环:[m+n for m in 'abc' for n in 'xyz']
练习:判断list中元素是否为字符串,
L1 = ['Hello','World',18,'Apple',None]
L2 = [x.lower() for x in L1 if isinstance(x,str)]
print(L2)
4.生成器
经过列表生成式建立时,因为内存大小的限制,列表的容量是有限的。所以采用一边循环,一边计算的机制,也就是生成器(generator)
#建立一个生成器,将列表生成式中的[]改为()便可
L = [x * x for x in range(10)]
g = (x * x for x in range(10))
能够经过next()函数得到下一个返回值(不实用,通常经过for循环获取)
#斐波拉契数列函数
def fib(max):
n,a,b = 0,0,1
while n < max:
print(b)
a,b = b,a+b # t = (b,a+b) t为tuple a = t[0] b = t[1]
n = n+1
return 'done'
#斐波拉契数列生成器
def fib(max):
n,a,b = 0,0,1
while n < max:
yield b
a,b = b,a+b # t = (b,a+b) t为tuple a = t[0] b = t[1]
n = n+1
return 'done'
函数和生成器的执行流程不一样,函数是顺序执行,遇到return语句或最后一行语句就返回。而生成器则是在每次调用next()时执行,遇到yield语句返回。再次执行时从上次返回的yield语句继续执行
5.迭代器
可用于for循环的对象称为可迭代对象 (有穷元素)
能够被next()函数调用并不断返回下一个值的对象称为迭代器 (Iterator) (无穷元素)
可迭代对象不是迭代器,可是能够经过iter()函数来进行转换
(可迭代对象就比如咱们去饭店点餐,咱们点的老是有限的。而迭代器就如同吃自助餐,咱们手里只有一个盘子,每次也只能取一个食物。但食物的供应量相对来说是无限的。一样的食物,从饭店拿到自助店就创造出了迭代器)