python中enumerate()函数&zip()函数&pickle模块等的使用

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值