random和json

本文介绍了Python random模块的基本用法,如生成随机整数、浮点数及字符,以及json模块的序列化与反序列化技巧。重点讲解randrange、randint、random.random和json.dumps/load等函数的实际操作与应用场景。


1. random随机模块

返回两数之间的随机数,不包括尾数:random.randrange()
import random
print(random.randrange(1,10))
# 3
返回两数之间的随机数,包括尾数: random.randint()
import random
print( random.randint(1,10)) #返回1-10之间的一个随机数,包括10
# 7
随机选取0到100间的偶数: random.randrange(0, 100, 2)
import random
print( random.randrange(0, 100, 2)) #随机选取0到100间的偶数
# 70
返回一个随机浮点数:random.random()
import random
print( random.random())  #返回一个随机浮点数
# 0.6505691222653638
返回一个给定数据集合中的随机字符:random.choice()
import random
print( random.choice('abce3#$@1')) #返回一个给定数据集合中的随机字符
# c
从多个字符中选取特定数量的字符:sample()
import random
print(random.sample('abcdefghij',3))  #从多个字符中选取特定数量的字符
# ['g', 'c', 'a']

2. json序列化模块

序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes

Json模块提供了四个功能:dumps、dump、loads、load

将 Python 对象编码成 JSON 字符串:json.dumps()
import json
data1 = json.dumps([1,2,3,4])         
print(data1, type(data1))
# [1, 2, 3, 4] <class 'str'>
将JSON 字符串解码为 Python 对象:json.loads ()
import json

data1 = json.dumps([1,2,3,4])
print(data1, type(data1))
data2 = json.loads(data1)
print(data2, type(data2))
# [1, 2, 3, 4] <class 'str'>
# [1, 2, 3, 4] <class 'list'>
将 Python 对象编码成 JSON 字符串:json.dump()
import json

# json.dump()函数的使用,将json信息写进文件
json_info = "{'name': 'Py小白雨'}"
file = open('1.json','w',encoding='utf-8')
json.dump(json_info,file)
file.close()

在这里插入图片描述

将JSON 字符串解码为 Python 对象:json.load()
import json

file = open('1.json','r',encoding='utf-8')
info = json.load(file)
print(info)
file.close()
# {'name': 'Py小白雨'}
### JSON与NPZ文件格式的区别及用途 #### 文件格式定义 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人类阅读编写,同时也便于机器解析生成[^1]。它基于文本格式,通常用于存储结构化数据以及在网络中传输数据。 相比之下,`.npz` 是一种由 NumPy 库支持的二进制文件格式,专门设计用来高效存储多维数组对象及其元数据。这种格式通过压缩技术减少磁盘占用空间,并提供快速加载能力[^2]。 #### 数据表示形式 JSON 使用键值对来描述数据,其基本单元包括字符串、数字、布尔值、数组嵌套的对象结构。由于它是纯文本格式,因此具有良好的跨平台兼容性可移植性。然而,这使得它的存储效率较低,尤其对于大规模数值型矩阵来说更是如此。 而 `.npz` 文件则可以保存一个或多个 NumPy 数组到单个存档文件里。这些数组被序列化为紧凑高效的二进制流,从而极大地提高了读写速度节省了存储资源。此外,当涉及复杂科学计算任务时,比如图像处理或者深度学习模型训练过程中产生的大量权重参数等场景下,使用 `.npz` 显得更加合适因为它们能够很好地保持原始精度而不丢失任何信息。 #### 存储性能对比 就访问时间而言,在相同条件下读取同样大小但内容复杂的 JSON 文本所需耗时远高于从对应的 .npz 归档提取相应部分所花费的时间;这是因为后者利用了底层 C 实现优化过的 I/O 操作机制再加上内置解压算法共同作用的结果。 另一方面值得注意的是尽管两者都能完成一定意义上的持久化工作——即将内存中的临时变量永久记录下来以便后续再次调用——但是各自适用范围存在显著差异:如果目标仅仅是简单地共享少量配置选项或者是与其他不依赖 Python 的系统交互,则推荐采用标准化程度更高的 JSON 方案;而对于那些专注于高性能运算需求的应用程序开发人员来讲,他们更倾向于选择功能强大且针对性强得多的 NumPy 提供的支持工具集之一即 .npz 格式来进行长期资料管理活动。 ```python import numpy as np import json # Example of saving multiple arrays into a single .npz file. array1 = np.random.rand(10, 10) array2 = np.arange(100).reshape((10, 10)) np.savez('arrays.npz', array_one=array1, array_two=array2) # Loading the saved .npz file back to memory. loaded_arrays = np.load('arrays.npz') print(loaded_arrays['array_one']) print(loaded_arrays['array_two']) # Converting dictionary containing numerical data structures like lists or dictionaries # (which may represent matrices) from/to JSON strings/files. data_dict = {"matrix": [[1, 2], [3, 4]]} with open("data.json", "w") as f: json.dump(data_dict, f) with open("data.json", "r") as f: loaded_data = json.load(f) print(loaded_data["matrix"]) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值