基础的数据就不说了,文档上面全都有...
一、切片(对于list和tuple类型数据)
#取前n个元素
list[0:n]
#如果第一个索引为0,可以省略
list[:n]
#支持取倒数(负数)
list[-2:]
#步长:所有数,每5个取一个:
list[::5]
二、迭代
1. 判断迭代
#通过 collections 模块的 Iterable 类型判断
from collections import Iterable
#str是否可以迭代,返回True
isinstance('abc', Iterable)
#整数是否可以迭代,返回Flase
isinstance(123, Iterable)
2. 遍历方法
#使用for...in...
for item in items:
return item
#dist遍历key
for key in dict:
return key
#dist遍历value
for value in dict.values():
return key
#dist遍历key,value
for key,value in dict.items():
return key,value
3. 带下标索引遍历方法
for index,item in enumerate(items):
return index,item
三、列表生成式
#1. 普通生成式
list(range(1,11))
#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#2. 函数生成式
list = [x * x for x in range(1, 11)]
#[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
#3. 函数+判断生成式
list = [x * x for x in range(1, 11) if x % 2 ==0]
#[4, 16, 36, 64, 100]
#4. 全排列(两层循环)
list = [m + n for m in 'ABC' for n in 'XYZ']
#['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
#对list进行操作
L = ['Hello', 'World', 'IBM', 'Apple']
list = [s.lower() for s in L]
#['hello', 'world', 'ibm', 'apple']
四、生成器generator
#1. 普通生成
g = (x * x for x in range(10))
#<generator object <genexpr> at 0x1022ef630>
#2. 使用
next(g)
for n in g:
return n
#函数生成器
def odd():
n = 1
yield n
n += 1
yield n
o = odd()
print(next(o))
print(next(o))
#使用for遍历
def odd():
n = 1
yield n
n += 1
yield n
o = odd()
for x in o:
print(x)
五、迭代器Iterator
- 判断
from collections import Iterator
isinstance((x for x in range(10)), Iterator) #True
isinstance('abc', Iterator) #False
- 生成器都是 Iterator 对象,但 list、 dict、 str 虽然是 Iterable,却不是Iterator。
- Iterator 甚至可以表示一个无限大的数据流,例如全体自然数。而使用list 是永远不可能存储全体自然数的。
- 把 list、 dict、 str 等 Iterable 变成 Iterator 可以使用 iter()函数:
isinstance(iter('abc'), Iterator) #True
为什么 list、 dict、 str 等数据类型不是 Iterator?
因为 Python 的 Iterator 对象表示的是一个数据流, Iterator 对象可以被 next()函数调用并不断返回下一个数据,直到没有数据时抛出
StopIteration 错误。可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过 next()函数实现按需计算下一个数据,所以 Iterator 的计算是惰性的,只有在需要返回下一个数据时它才会计算。
六、虚拟环境
#创建
python -m venv XXX
#使用
#linux下:
source <XXX>/bin/activate
#win下
<XXX>/Scripts/activate.bat
#退出
deactivate
网友评论