python学习-高级特性
2021/11/28 1:12:04
本文主要是介绍python学习-高级特性,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
切片
# 切片获取list或tuple的部分元素 L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] print(L[0:3]) # L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。 # 如果第一个索引是0,还可以省略: print(L[:3]) # 倒数切片(倒数第一个索引是-1) print(L[-1:],L[0:-1]) ls = list(range(101)) # 第二个:后表示间隔 print(ls[::5]) # 字符串和tuple 是不可变序列, 也能使用切片, 返回的是新的拷贝对象 strs="this is my life" tups=(1,2,3,4,5,64,6,7) print(strs[0:-1:2],tups[0:-1:3])
迭代
li = list(range(0,100,3)) dict = {'a': 1, 'b': 2, 'c': 3} strs = "this is a simple string" # for i in li: # print(i) # for k in dict: # print(k) # for s in strs: # print(s) # 只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。 # 判断是否可迭代 from collections.abc import Iterable print(isinstance(dict.keys,Iterable)) print(isinstance(li,Iterable)) print(isinstance(strs,Iterable)) # 获取下标 # for i,value in enumerate(li): # print(i,value) # 同时引用两个变量 for x, y in [(1, 1), (2, 4), (3, 9)]: print(x,y)
列表生成器
# 生成间隔为1的序列[0,10) print(list(range(1,11,1))) # 生成[1x1, 2x2, 3x3, ..., 10x10]: for前面表达式进行计算, 后面的if语句用于过滤 print([x*x for x in list(range(1,11))]) # for循环后面还可以加上if判断(if语句用于过滤, 不能添加else) print([x*x for x in list(range(1,11)) if(x % 2 == 0)]) # 使用两层循环,可以生成全排列 print([m + n for m in 'ABC' for n in 'XYZ']) # 列出当前目录下的所有文件和目录名 import os print([d for d in os.listdir('.')]) # 使用两个变量来生成list d = {'x': 'A', 'y': 'B', 'z': 'C' } print([k+'='+v for k,v in d.items()])
列表生成器
# 必须事先将所有数据存储到容器中,才能开始迭代;而生成器却不同,它可以实现在迭代的同时生成元素。 # 方法一:把一个列表生成式的[]改成(),就创建了一个generator L = [x * x for x in range(10)] print(type(L),L) g = (x * x for x in range(10)) print(type(g),g,next(g),next(g)) # for n in g: # print(n) # 斐波那契数列 def fib(max): n, a, b = 0, 0, 1 while n < max: # print(b) a, b = b, a + b n = n + 1 return 'done' # fib(10) def fib(max): n, a, b = 0, 0, 1 while n < max: # 使用yield将方法变为生成器 yield b a, b = b, a + b n = n + 1 return 'done' print(type(fib(10))) for n in fib(10): print(n)
迭代器
# 可以直接作用于for循环的数据类型有以下几种: # 一类是集合数据类型,如list、tuple、dict、set、str等; # 一类是generator,包括生成器和带yield的generator function。 # 这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。 # 可以使用isinstance()判断一个对象是否是Iterable对象: from collections import Iterable from typing import Iterator print(isinstance({},Iterable)) print(isinstance([],Iterable)) print(isinstance('abc',Iterable)) print(isinstance((x for x in range(10)),Iterable)) print(isinstance(100,Iterable))# False # 被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。 print(isinstance({},Iterator)) # False print(isinstance([],Iterator)) # False print(isinstance('abc',Iterator)) # False print(isinstance((x for x in range(10)),Iterator)) # True # 生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator # 使用iter() 函数将list, dict,str转为Iterator print(isinstance(iter({}),Iterator)) # True print(isinstance(iter([]),Iterator)) # True print(isinstance(iter('abc'),Iterator)) # True # Python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误 # Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。数据长度不确定 使用list是永远不可能存储全体自然数的。 # 一个 Iterator 对象需且仅需同时具有 __iter__ 和 __next__ 方法 class IteratorExample: def __iter__(self): pass def __next__(sefl): pass print(isinstance(IteratorExample(), Iterator)) # True
这篇关于python学习-高级特性的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门