1、enumerate() 函数
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
语法
enumerate(sequence, [start=0])
参数说明;
sequence: 一个序列、迭代器或其他支持迭代对象。
start: 下标起始位置。
示例:
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
print(list(enumerate(seasons, start=1)))
for i, element in enumerate(seasons):
print(i, element)
运行结果:
2、zip()函数
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。
语法:
zip([iterable, …])
iterable是一个或多个可迭代的对象
示例:
a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped1 = list(zip(a,b)) # 打包为元组的列表
print(zipped1)
zipped2 = zip(a,c) # 元素个数与最短的列表一致
print(list(zipped2))
a1,b1 = zip(*zipped1) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
print(list(a1))
print(list(b1))
运行结果如下:
for 循环遍历,支持并行迭代
l1 = [2,3,4]
l2 = [4,5,6]
for (x,y) in zip(l1,l2):
print(x,y,'--',x*y)
运行结果如下:
其实它的工作原理就是使用了zip()的结果,在for循环里解包zip结果中的元组,用元组赋值运算。
3、pickle模块
pcikle模块是用来加工数据的,可以用来存取结构化数据。举个例子:
一个字典a = {‘name’:‘Tom’,‘age’:22},用pickle.dump存到本地文件,所存数据的结构就是字典,而普通的file.write写入文件的是字符串。读取时,pickle.load返回的是一个字典,file.read返回的是一个字符串。如下代码:
import pickle
a = {'name':'Tom','age':22}
with open('text.txt','wb') as file:
pickle.dump(a,file)
with open('text.txt','rb') as file2:
b = pickle.load(file2)
print(type(b))
运行结果如下;
得到的b的类型是字典,b和a是等价的,也就是说pickle可以把字典、列表等结构化数据存到本地文件,读取后返回的还是字典、列表等结构化数据。而file.write、file.read存取的对象是字符串。
4、shuffle与permutation的区别
函数shuffle与permutation都是对原来的数组进行重新洗牌(即随机打乱原来的元素顺序);区别在于shuffle直接在原来的数组上进行操作,改变原来数组的顺序,无返回值。而permutation不直接在原来的数组上进行操作,而是返回一个新的打乱顺序的数组,并不改变原来的数组。
示例:
import numpy as np
a = np.arange(12)
print(a)
np.random.shuffle(a)
print(a)
print("===============================")
a = np.arange(12)
print(a)
b = np.random.permutation(a)
print(b)
print(a)
运行结果如下:
参考资料:
- python函数菜鸟教程:https://www.runoob.com/python3/python3-iterator-generator.html
- python_pickle模块简书:https://www.jianshu.com/p/cf91849064e3
- 博客:原文链接:https://blog.csdn.net/lyy14011305/article/details/76207327