Python进阶复习-自带库

2023-09-18 22:29:43

random库

  1. random.random():生成一个 0 到 1 之间的随机浮点数。
  2. random.uniform(a, b):生成一个在 a 和 b 之间均匀分布的随机浮点数。
  3. random.randint(a, b):生成一个在 a 和 b 之间均匀分布的随机整数。
  4. random.choice(sequence):从给定的序列中随机选择一个元素。
  5. random.shuffle(sequence):将给定的序列随机重排。

以下是一个简单的示例:

import random

# 生成一个 1 到 10 之间的随机整数  
random_number = random.randint(1, 10)  
print(random_number)

# 生成一个 0 到 1 之间的随机浮点数  
random_float = random.random()  
print(random_float)

# 生成1到3之间的随机小数
num = random.uniform(1, 3)
print(num)

# 从给定的列表中随机选择一个元素  
my_list = [1, 2, 3, 4, 5]  
random_choice = random.choice(my_list)  
print(random_choice)

# 随机重排给定的列表  
random.shuffle(my_list)  
print(my_list)  

执行结果:

3
0.5758794427653507  
2.2497986960451546
4
[2, 5, 1, 3, 4]  

collection库

Counter函数

  • counter函数可以用于计算一个可迭代对象中元素的出现次数。
  • counter函数只能用于可迭代对象,不能用于非迭代对象。如果需要对非迭代对象进行计数,可以使用循环语句来实现。
from collections import Counter

# 计数器对象  
counter = Counter([1, 2, 3, 2, 1, 3, 1])

# 获取元素的出现次数  
print(counter[1])  # 输出:3  
print(counter[2])  # 输出:2  
print(counter[3])  # 输出:2  

namedtuple函数

  • 用于创建具有命名字段的元组。它的作用是使代码更具可读性和自文档性。
from collections import namedtuple

# 创建一个名为Student的namedtuple
Student = namedtuple('Student', ['name', 'age', 'grade'])

# 创建一个Student实例
s = Student('小明', 18, '大一')

# 访问字段
print(s.name)  # 输出:小明
print(s.age)   # 输出:18
print(s.grade) # 输出:大一

deque函数

  • 在 Python 中,可以使用deque类来实现双端队列。
from collections import deque

# 创建一个空的 deque  
d = deque()

# 向 deque 中添加元素  
d.append(1)  
d.append(2)  
d.append(3)

# 获取 deque 中的元素  
print(d)  # 输出:deque([1, 2, 3])

# 从 deque 中删除元素  
d.popleft()

# 获取 deque 中的元素  
print(d)  # 输出:deque([2, 3])  

itertools库

enumarate函数

# 使用 enumerate 函数遍历列表  
fruits = ['apple', 'banana', 'cherry']  
for index, fruit in enumerate(fruits):  
    print(index, fruit)  

输出:

0 apple  
1 banana  
2 cherry  

zip函数

  • zip函数是一个用于将多个可迭代对象组合成一个单个迭代对象的函数。它接受多个可迭代对象作为参数,然后返回一个迭代器,该迭代器生成元组,其中每个元组的第i个元素来自第i个参数可迭代对象。
  • 以下是zip函数的基本语法:
zip(*iterables)

其中,*iterables是要组合的可迭代对象的一个或多个迭代对象。

例如,如果有两个列表如下:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']

可以使用zip函数将它们组合成一个迭代器,如下所示:

zipped = zip(list1, list2)

然后,可以使用该迭代器来生成元组:

for element in zipped:
    print(element)

这将输出:

(1, 'a')
(2, 'b')
(3, 'c')

如果希望将结果转换为一个列表,可以使用list函数:

zipped_list = list(zip(list1, list2))
print(zipped_list)

这将输出:

[(1, 'a'), (2, 'b'), (3, 'c')]

product函数

import math

n = 5  
result = math.prod(n)  
print(result)  # 输出:120  

在上面的代码中,math.prod函数计算了从 1 到 n 的乘积,并将结果存储在result变量中。最后,使用print函数将结果输出到控制台。

如果需要计算一个序列的乘积,可以使用itertools库中的product函数。例如:

import itertools

result = itertools.product([1, 2, 3], repeat=3)  
print(list(result))  # 输出:[(1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 1), (1, 2, 2), (1, 2, 3), (2, 1, 1), (2, 1, 2), (2, 1, 3), (2, 2, 1), (2, 2, 2), (2, 2, 3)]  

在上面的代码中,itertools.product函数计算了从 1 到 3 的乘积,并将结果存储在result变量中。最后,使用list函数将结果转换为列表,并使用print函数将结果输出到控制台。

更多推荐

案例丨如何提升可视化分析能力?听听这两家企业怎么说

神策分析2.5版本正式发布经营分析能力以来,已有不少客户接入使用,并充分实现了可视化分析能力的提升。本文将为大家分享两家客户的真实反馈,希望能够帮助您进一步了解神策经营分析的能力。案例一:神策数据助力美篇打造公司级“数据可视化平台”“我们希望接入神策数据之后,能够更清晰、便捷、完整、及时地查看和分析平台内容消费情况、社

拓世法宝|短视频带货风潮,数字人教育书单号成销售黑马

Z世代的爸妈,正在搞一种很新的育儿方式。“躺平式”带娃、“用魔法打败魔法”等新时代育儿方式频频登上热搜,作为与互联网共同成长起来的一代,Z世代父母们更热衷于通过网络攻略获得和分享知识和经验,更注重个性的养育方式,并且伴随整体消费水平的提高,科学和精致化育儿已经逐渐成为现下带娃的主流趋势。Z世代父母们喜欢在短视频平台上购

spring boot 整合多数据源

多数据源产生的场景一般情况下,不会有多数据源这样的场景出现,但老项目或者特殊需求的项目,可能会有这样的场景同一个应用需要访问两个数据库不用数据库中间件的读写分离注入数据源选择的时机声明两个数据源实例,在getConnection的时候根据业务的不同,注入不同数据源的连接环境准备准备sql脚本,建立两个库,这里mysql

java使用正则提取数据

一、正则提取文本指定数据需要对一个json结构做数据的提取,提取label和value的值,组成新的结构,西瓜:0、苹果:1、草莓:2原始json字符串如下格式[{"label":"西瓜","value":0},{"label":"苹果","value":1},{"label":"草莓","value":2},{"la

LeetCode2.两数相加

一看完题,我的想法是先算出这两个链表表示的数,然后相加,然后把这个数一位一位的分配给第三个数组,这种方法应该很简单但是要遍历三次数组,于是我就想直接一遍遍历,两个链表同时往后面遍历,把这两个数的和给第三个链表,如果有进位,下一个数加1;但是写完之后出现的问题,因为我的循环是先创建下一个链表然后,指针指向这个链表,然后再

AI绘图软件Stable Diffusion 安装和使用之二controlnet插件

本期说一下StableDiffusion非常有名的插件controlnet。同上一篇一样,我们安装b站大佬秋葉aaaki(有的网友戏称他/她是赛博佛祖)的stablediffusion4.2整合包。解压缩以后,打开启动器,见下图,界面比早期版本更好看了。​编辑​启动器打开以后,安装controlnet插件填写网址:ht

【文生图系列】如何在Stable Diffusion Webui中使用ControlNet

文章目录ControlNetStableDiffusion+ControlNet安装ControlNet插件bug例子展示参考ControlNetControlNet是一个神经网络结构,通过添加额外的条件控制扩散模型。给定任务条件,ControlNet能够提升已训练好的图像扩散模型。对于任意一个神经网络块,如下图所示,

【面试经典150 | 数组】跳跃游戏 II

文章目录写在前面Tag题目来源题目解读解题思路方法一:贪心写在最后写在前面本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更……专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾与总结,文章结构大致如下,部分内容会有增删:Tag:介绍本题牵涉到的知识点、数据结构;题目来源

软件测试/测试开发丨利用人工智能ChatGPT编写晋级报告

点此获取更多相关资料简介不管是在哪个公司,如果想要有一个长足的发展,想要获得晋升,除了平时的表现与积累,还有就是晋级答辩与晋级报告。不同的岗位,比如设计、产品、研发、测试,都有不同的答辩通道和晋级标准。一篇好的晋级报告,可以完整地体现一个人过去的工作贡献,以及未来的工作展望。而晋级报告的编写,也可以借助ChatGPT轻

微信CRM系统致力于帮助金融保险行业

在当今信息化的时代,金融保险行业面临着越来越大的竞争与挑战,那么微信CRM系统是怎么帮助金融保险行业解决问题的呢?金融保险行业面临的困难①销售管理困难,企业资源容易流失;金融保险业通过在线销售实现业务。电话销售、微信沟通难以监控管理,销售部员工流动性大,导致监管风险和客户资源流失。②客户营销困难,用户意向定位模糊;由于

《golang设计模式》第二部分·结构型模式-06-享元模式(Flyweight)

文章目录1.概述1.1角色1.2类图2.代码示例2.1设计2.2代码2.3类图示例1.概述享元(Flyweight)模式采用共享方式向客户端提供数量庞大的细粒度对象。所谓细粒度对象,是指实现了业务细节并相互独立的对象。细粒度对象是一种相对概念,一般不会进行更小粒度的拆分。1.1角色抽象享元(Flyweight):通常是

热文推荐