【Effective Python教程】(90个有效方法)笔记——第1章:培养pythonic思维——7:尽量用enumerate取代range

文章目录

  • 第1章:培养pythonic思维
    • 第7条 尽量用enumerate取代range(移位操作、位掩码)
      • 要点
        • enumerate函数可以用简洁的代码选代iterator,而且可以指出当前这轮循环的序号。
        • 不要先通过range指定下标的取值范围,然后用下标去访问序列,而是应该直接用enumerate 函数迭代。
        • 可以通过enumerate的第二个参数指定起始序号(默认为0)。

Effective Python——编写高质量Python代码的90个有效方法

本书介绍:https://effectivepython.com/

代码demo:https://effectivepython.com/

第1章:培养pythonic思维

在这里插入图片描述

第7条 尽量用enumerate取代range(移位操作、位掩码)

在这里插入图片描述

from random import randint

random_bits = 0
print(f'init: {bin(random_bits)}')


for i in range(32):
    # randint(0, 1) 生成一个随机整数,要么是0要么是1
    if randint(0, 1):
        # 把random_bits的第i+1位(从右往左数)置1
        random_bits |= 1 << i
        print(f'i = {i}: {bin(random_bits)}')


print(f'final: {bin(random_bits)}')

在这里插入图片描述

这段代码的目的是生成一个随机的32位二进制数,并将其打印出来。代码的工作流程如下:

  1. 导入 Python 的 randint 函数,它用于生成一个指定范围内的随机整数。
  2. 初始化变量 random_bits 为0,这将用于存储生成的随机位。
  3. 使用一个循环,循环32次(从0到31),每次循环都可能修改 random_bits 的值。
  4. 在循环内部,使用 randint(0, 1) 生成一个随机整数,要么是0要么是1。如果生成的是1,则执行以下操作:
    • 使用位移操作 1 << i,这个操作会得到一个只在第i位为1其余都为0的整数。
    • 使用位或操作 |= 来将 random_bits 中的相应位设置为1。
  5. 循环结束后,使用 bin() 函数将整数 random_bits 转换为一个二进制字符串,并打印出来。

输出示例中 0b1110100100100100000111000010000001 是一个可能的随机32位二进制数的例子。这个二进制数是由 randint 在每个循环中随机决定每一位是0还是1来生成的。

关于位掩码操作,可参考文章:python移位操作符(左移位操作符<<、右移位操作符>>)(允许开发者对整数进行位操作,乘2或除2)(左移操作、右移操作)(位掩码操作|=)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

flavor_list = ['vani1la', 'chocolate', 'pecan', 'strawberry']
it = enumerate(flavor_list)
print(next(it))
print(next(it))

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

要点

enumerate函数可以用简洁的代码选代iterator,而且可以指出当前这轮循环的序号。
不要先通过range指定下标的取值范围,然后用下标去访问序列,而是应该直接用enumerate 函数迭代。
可以通过enumerate的第二个参数指定起始序号(默认为0)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/674199.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux eBPF:网络、系统监控和安全领域的创新

扩展 Berkeley Packet Filter&#xff08;eBPF&#xff09;是Linux内核中的一项强大技术&#xff0c;最初用于网络数据包过滤。随着时间的推移&#xff0c;eBPF的功能和应用场景不断扩展&#xff0c;如今已成为网络、系统监控和安全等领域的重要工具。eBPF可以在Linux内核中安全…

Halcon 双相机标定与拼图(一)

二、算子解释 get_calib_data camera-pose 获得基于第一个相机的第二个相机的Pose get_calib_data (CalibDataID, camera, 1, pose, RelPose2) *relative 相对 * To get the absolute pose of the second camera, its relative pose needs * to be inverted and combined…

2024 cicsn magicvm

文章目录 参考检查逆向vm::runvm::vmvm_alu::set_inputvm_mem::set_inputvm_id::runvm_alu::runvm_mem::run 漏洞思路参考的exp 参考 https://forum.butian.net/share/3048 https://akaieurus.github.io/2024/05/20/2024%E5%9B%BD%E8%B5%9B%E5%88%9D%E8%B5%9Bpwn-wp/#SuperHea…

【Nacos_bugs】java.lang.IllegalStateException: Failed to load ApplicationContext

报错原因 找不到配置文件。 Bug 排查 如果使用 Nacos 管理配置文件&#xff0c;需要检查本地 bootstrap.yml 配置是否出现问题&#xff1a; 检查点&#xff1a; 检查 Nacos 服务的地址有没有配置错误&#xff0c;如上图 ①&#xff0c;格式严格为 IP:端口号" 检查 D…

Mongodb的数据库简介、docker部署、操作语句以及java应用

Mongodb的数据库简介、docker部署、操作语句以及java应用 本文主要介绍了mongodb的基础概念和特点&#xff0c;以及基于docker的mongodb部署方法&#xff0c;最后介绍了mongodb的常用数据库操作语句&#xff08;增删改查等&#xff09;以及java下的常用语句。 一、基础概念 …

WebPack插件实现:打包之后自动混淆加密JS文件

在WebPack中调用JShaman&#xff0c;实现对编译打包生成的JS文件混淆加密 一、插件实现 1、插件JShamanObfuscatorPlugin.js&#xff0c;代码&#xff1a; class JShamanObfuscatorPlugin { apply(compiler) { compiler.hooks.emit.tapAsync(JShamanObfuscatorPlugin, (comp…

【Python网络爬虫】详解python爬虫中正则表达式、BeautifulSoup和lxml数据解析

&#x1f517; 运行环境&#xff1a;PYTHON &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…

SpringMVC日期格式处理 分页条件查询

实现日期格式处理 实现分页条件查询&#xff1a; 分页条件查询 和 查询所有 是两个不同的方法&#xff0c;使用同一个mapper的查询功能&#xff0c;但是两个不同的业务方法 ​​​​​​​

2024年5月2日 Go生态洞察:Go 1.22中的安全随机性

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a;…

切勿大意!痉挛性斜颈治疗中的三个重要“禁忌”,后果堪忧!

今天&#xff0c;要给大家讲一个非常重要的话题——痉挛性斜颈的治疗。痉挛性斜颈是一种常见的神经肌肉疾病&#xff0c;患者在日常生活中可能会遇到许多困扰和不便。因此&#xff0c;及早治疗对患者来说至关重要。 然而&#xff0c;在治疗痉挛性斜颈的过程中&#xff0c;千万切…

计算机网络学习实践:模拟RIP动态路由

计算机网络学习实践&#xff1a;模拟RIP动态路由 模拟动态路由RIP协议 1.实验准备 实验环境&#xff1a;华为模拟器ENSP 实验设备&#xff1a; 3个路由器&#xff0c;3个二层交换机&#xff08;不是三层的&#xff09;&#xff0c;3个PC机 5个网段 192.168.1.0 255.255.…

计算机网络学习实践:DHCP跨网段动态分配IP

计算机网络学习实践&#xff1a;DHCP跨网段动态分配IP 1.实验准备 实验环境&#xff1a;思科的模拟器 实验设备&#xff1a; 1个服务器&#xff0c;2个二层交换机&#xff08;不是三层的&#xff09;&#xff0c;4个PC机&#xff0c;1个路由器 三个网段 192.168.1.0 255.…

【操作系统】详谈操作系统的发展历程

文章主题 导读一、手工操作阶段1.1 计算机的诞生1.2 计算机的使用 二、批处理阶段2.1 单道批处理系统2.2 多道批处理系统 三、分时操作系统3.1 分时技术3.2 分时操作系统3.1 分时系统的主要特征 四、实时操作系统五、网络操作系统和分布式计算机系统六、个人计算机操作系统结语…

【cdo专辑】2.1 文件信息(下)

目录 0.先cd进数据路径&#xff08;进行操作前一定要进入数据文件夹奥&#xff09; 1.输出文件格式&#xff08; cdo showformat nc文件&#xff09; 2.输出变量名&#xff08; cdo showname nc文件&#xff09; 3.输出变量标准名称&#xff08; cdo showstdname nc文件&am…

从“百模”到“千体”:大模型智能体的竞争格局、商业模式和技术挑战

原本平静的5月&#xff0c;从14日凌晨OpenAI发布GPT-4o开始热闹起来。 一天之后&#xff0c;谷歌在一年一度的开发者大会上发布智能助理项目Astra和轻量化多模态模型Gemini 1.5 Flash。 同一天&#xff0c;字节升级了AI助手“豆包”和应用开发平台“扣子”&#xff0c;并发布…

Postgre数据库初探

一、PostgreSQL介绍 PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES&#xff0c; 版本 4.2为基础的对象关系型数据库管理系统&#xff08;ORDBMS&#xff09;。POSTGRES 领先的许多概念在很久以后才出现在一些商业数据库系统中。 PostgreSQL是最初的伯克利代码的开…

linux内核零拷贝技术详解

1.前言 Linux系统中一切皆文件&#xff0c;仔细想一下Linux系统的很多活动无外乎读操作和写操作&#xff0c;零拷贝就是为了提高读写性能而出现的。 2. 数据拷贝基础过程 在Linux系统内部缓存和内存容量都是有限的&#xff0c;更多的数据都是存储在磁盘中。对于Web服务器来说…

linux系统上shell脚本编写问题总结

需求背景&#xff1a;项目技术栈&#xff1a;Vue2Nuxt2TypeScript&#xff0c;是一个服务端渲染的项目&#xff0c;每次打测试包时需要在虚拟机上通过命令行打包项目&#xff0c;然后将打包生成的文件压缩为一个压缩包.tar.gz&#xff0c;然后将这个压缩包下载到本地&#xff0…

免费API HUB行业报告

1. 行业概述 1.1 API HUB定义 API HUB&#xff0c;即应用程序接口中心&#xff0c;是一个集中管理和提供API服务的平台。它允许开发者轻松地访问和集成来自不同来源的API&#xff0c;从而加速开发过程并促进技术创新。 1.2 免费API HUB的特点 免费API HUB通常具有以下特点&…

免费听歌软件b端(但需要下载)

我会觉得很好用所以分享出来供大家使用。 这个事打开后的页面包括可以选择分页&#xff0c;和搜索等 回车可以用上面的搜索图片也可以点机 从前往后呢分别是排序&#xff0c;歌曲id&#xff0c;歌曲名称&#xff0c;歌手&#xff0c;专辑&#xff0c;歌曲长度&#xff0c;操作 …