Python学习笔记4 高级特性_20170618

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习笔记4 高级特性_20170618相关的知识,希望对你有一定的参考价值。

# 切片(获取list / tuple / 字符串 中指定的元素)

l = list(range(10))
l[0:3]
l[:3] # 0可以省略
l[:] # 全部
l[3:] # 最后的可以省略
l[-2:-1] # 负数下标,见python笔记2中介绍
l[-10:] # 取最后10个数
l[::2] # 所有数,每个两个取出

 

# 迭代

  • 通过 for ... in ...
  • 可迭代对象:list、tuple、字符串已经在pythonb笔记2中提到了。
  • 判断是否可迭代
from collections import Iterable
isinstance(abc, Iterable)
  • 将 list 转化成可以使用下标操作
for i, value in enumerate([A,B,C]) :
    print(i, value)
  • 同时引用两个变量
for x,y in [(1,2), (3,4)] :
    print(x, y)

 

# 列表生成式(一句话生成需要的 list)

  • range
list(range(2,10))
  • 通用方法
[x*x for x in range(1,10)]
[x*x for x in range(1,10) if x%2 == 0]
[m+n for m in ABCD for n in 12345]
  • dict 情况
d = {x:A, y:B}
>>>[k+=+c for k,v in d.items()]
[x=A, y=B]

 

# 生成器(得到的是“函数”规则,而非结果)

  • 列表生产式相关(将中括号改成小括号)
g = (x*x for x in range(10))
>>>next(g) # 获得生成器的结果
  • 函数相关(在需要停的位置添加yield,比如改 print 为 yield)
# 函数
def dplist(l) : 
    for sub in l :
        print(sub)
    return done

# 生成器
def dplist(l) : 
    for sub in l :
        yield(sub)
    return done

  添加了 yield 的地方更像是一个函数的运行断点,每次运行都是承接上次的运行结果。不会循环,到末了就会报终止错误,该错误可以catch

  • 捕获错误
>>>def dplist() : 
    for sub in range(10) :
        yield(sub)
    return done


>>>g = dplist()
>>>while True: try: x=next(g) print(g = , x) except StopIteration as e: print(Genearator return vaue : , e.value) break

 

# 迭代器

可以用于for循环的:list、tuple、dict、set、str、生成器(generator)等

  • 以上可以直接作用于 for 的,称为“可迭代对象”(Iterable)

  判断方法

from collections import Iterable
>>>isinstance([], Iterable)
  • “迭代器对象”(Iterator)
from collections import Iterator
>>>isinstance([], Iterator)

生成器才是“迭代对象”,可以使用next

list、tuple、dict、set、str、生成器(generator)是“可迭代”对象,不能使用next

  • Iterable转化为Iterator,使用 iter()
isinstance(iter([]), Iterator)
  • 迭代器什么用:

  迭代器因为是一种规则,所以理论上可以表示所有的整数。但是诸如 list 就不可以。

 


以上是关于Python学习笔记4 高级特性_20170618的主要内容,如果未能解决你的问题,请参考以下文章

Python学习笔记高级特性

Python学习笔记—— 高级特性

python学习笔记高级特性

Python学习07:高级特性

Python学习07:高级特性

Python学习笔记八 面向对象高级编程