Python学习笔记(三):高级特性
来源:互联网 发布:人员优化方案怎么写 编辑:程序博客网 时间:2024/06/05 15:58
切片
Slice,取指定索引范围的操作
L=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
L[0:3]
获取0到2
L[:3]
获取0到2
L[10:20]
获取10到19
L[-1:]
获取最后一个元素
L[-3:]
获取最后三个元素
L[::5]
所有数,每5个取一个
L[:10:2]
前10个数,每两个取一个
L[:]
复制整个list
tuple、str都可以使用切片
(0,1,2,3,4,5,6,7,8,9)[:3]
'ABCDEFGH'[0:5]
迭代
Iteration,遍历,通过for…in来完成,for…in不止可以用在list或tuple上,还可以用在其他可迭代对象上。
d={'a':1,'b':2,'c':3}
for key in d:
print(key)
for value in d.values():
print(value)
for k,v in d.items():
print(k,v)
判断对象是否可以迭代,通过collection模块的Iterable类型判断
from collection import Iterable
isinstance('abc',Iterable) True
isinstance([1,2,3],Iterable) True
isinstance(123,Iterable) False
Python内置的enumerate可以把一个list变成索引-元素对
for i,value in enumerate(['A','B','C'])
print(i,value)
所有的可迭代对象都可以使用for循环,包括自己定义的类型
列表生成式
List Comprehensions
[x*x for x in range(1,11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
[m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
import os
[d for d in os.listdir('.')]
['DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt','python.exe', 'python3.dll', 'python36.dll', 'pythonw.exe', 'Scripts', 'tcl','Tools', 'vcruntime140.dll', 'workspace']
L = ['Hello', 'World', 'IBM', 'Apple']
[s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']
L1 = ['Hello', 'World', 18, 'Apple', None]
L2=[s.lower() for s in L1 if isinstance(s,str)]
print(L2)
['hello', 'world', 'apple']
生成器
generator,可以一边循环一边计算的机制,在Python中可以通过列表生成式改成generator,也可以通过函数来实现复杂逻辑的generator
通过将列表生成器[]改变成()来创建一个generator
g=(xfor x in range(1,20))
通过函数来创建generator,如果一个函数包含yield关键字,这个函数就不再是一个普通函数,而是一个generator。变成generator的函数与普通函数执行流程不同,每次调用next()执行,遇到yield语句返回,下一次从上次返回的yield语句继续执行
deffib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
return 'done'
generator可以使用next()来获取generator的下一个返回值
next(g)
generator也可以使用for循环来迭代它
for n in g:
print(n)
要想拿到generator的返回值,要先捕获StopIteration错误,返回值包括在stopIteration的value里面。
while True:
try:
x=next(g)
print('g',x)
except StopIteration as e:
print('Generator return value:',e.value)
break
迭代器
凡是可以用for循环的对象都是Iterable类型
凡是可用作next()函数的对象都是Iterator类型,它们代表一个惰性计算的序列
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数来获得一个Iterator对象
for循环本质上是通过不断调用next()函数来实现的
- Python学习笔记(三)高级特性
- Python学习笔记(三)--高级特性
- Python学习笔记(三):高级特性
- python学习笔记(三) - 高级特性
- python学习(三):高级特性
- Python学习 (三 高级特性)
- Python之学习笔记(高级特性)
- 廖雪峰Python教程学习笔记三-高级特性
- Python学习笔记--高级特性
- python学习笔记----高级特性
- python学习笔记(7)-高级特性(三)-列表生成式与生成器
- Python 学习笔记(三):文件,高级特性,枚举,正则表达式,模块
- 【Python学习笔记】python高级特性:切片
- 【Python学习笔记】python高级特性:生成器
- 【Python学习笔记】python高级特性:迭代器
- 【python】Python速成(三) --高级特性
- python学习笔记(5)-高级特性(一)-切片
- Python学习笔记(四)——高级特性
- 文章标题
- html中<checkbox>标签用法解析及如何设置checkbox复选框的默认选中状态
- 关于try-catch-finally-throws
- Leetcode算法学习日志-714 Best Time to Buy and Sell Stock with Transaction Fee
- 数据结构实验B树的C++代码实现
- Python学习笔记(三):高级特性
- nginx反向代理图片小结
- 数据结构—B树、B+树
- Tensorflow中的CNN layer参数(即用tensorflow框架实现简单CNN)
- MBC学习资料
- 在ngixn不解析php文件.需要配置下面
- 词嵌入
- XML的语法和解析
- jqgrid json数据格式