Python2-对象与变量-可变对象与不可变对象-可迭代对象-enumerate-zip-map

Python2-对象与变量-可变对象与不可变对象-可迭代对象-enumerate-zip-map

    • 1.对象与变量
    • 2.对象的值的比较==和引用判断is
    • 3.不可变对象与可变对象
    • 4.可迭代对象iterable
    • 5.enumerate()
    • 6.zip函数
    • 7.map函数


1.对象与变量

Python3中,一切皆为对象,Python语言的每个对象由标识符(identity)、类型(type)、值(value)标识。

id(123)
type(123)
print(123)

Python对象是位于计算机内存中的一个内存数据块。为了引用对象,用户必须通过赋值语句把对象赋值给变量(也称之为把对象绑定到变量)。指向对象的引用即变量。

2.对象的值的比较==和引用判断is

通过==运算符可以判断两个变量指向的对象的值是否相同

通过is运算符可以判断两个变量是否指向同一个对象

x = 'abc'
y = x
z = 'abcd'print(x == y) # True
print(x is y) # True
print(x == z) # False
print(x is z) # False

3.不可变对象与可变对象

Python3对象可以分为不可变对象(immutable)和可变对象(mutable)。不可变对象一旦创建,其值就不能被修改;可变对象的值可以被修改。Python对象的可变性取决于其数据类型的设计,即是否允许改变其值。

不可变对象:int、float、bool、str、complex、tuple、frozenset

变量是指向某个对象的引用,多个变量可以指向同一个对象。给变量重新赋值并不改变原始对象的值,只是创建一个新对象,该变量引用该对象。

可变对象:list、dict、set

4.可迭代对象iterable

可迭代对象一次返回一个元素,适用于循环结构。Python包括以下几种可迭代对象:

序列(sequence):str、list、tuple
字典、文件对象、迭代器对象iterator、生成器函数generator

迭代器是一个对象,表示可迭代的数据集合,包括方法__iter__()__next__(),可以实现迭代功能。例如内置对象range是一个迭代器对象。

生成器是一个函数,使用yield语句,每次产生一个值,也可以用于循环迭代。

5.enumerate()

Python语言中的for循环直接迭代对象集合中的元素,如果需要在循环中使用索引下标访问集合元素,则可以使用内置的enumerate()函数。

enumerate()函数用于将一个可遍历的数据对象(list、tuple、str)组合为一个索引序列,并返回一个可迭代对象,所以在for循环中可以迭代下标和索引。

seasons = ['Spring', 'Summer', 'Autumn', 'Winter']for i in enumerate(seasons, start=1):print(i)'''
(1, 'Spring')
(2, 'Summer')
(3, 'Autumn')
(4, 'Winter')
'''
seasons = ['Spring', 'Summer', 'Autumn', 'Winter']for i,s in enumerate(seasons, start=1):print(str.format("第{0}季节:{1}", i, s))

6.zip函数

如果需要并行遍历多个可迭代对象,则可以使用Python内置函数zip()。zip()函数将多个可迭代对象中对应的元素打包成一个元组,然后返回一个可迭代对象。如果元素的个数不一致,则返回可迭代对象的长度与最短的对象相同。

x = [1,2,3,4,5]
y = ['a', 'e','i', 'o', 'u']for i in zip(x, y):print(i)
'''
(1, 'a')
(2, 'e')
(3, 'i')
(4, 'o')
(5, 'u')
'''for idx,value in zip(x, y):print(idx, value)

7.map函数

如果需要遍历可迭代对象,并使用指定函数处理对应的元素,则可以使用Python内置函数map()。

map(func, seq1[, seq2, ...])函数将func函数作用域seq中的每一个元素,并将所有的调用结果作为可迭代对象返回。如果func为None,作用等同于zip函数。

例如要返回列表中每个字符串的长度:

seasons = ['Spring', 'Summer', 'Autumn', 'Winter']
print(list(map(len,seasons))) # [6, 6, 6, 6]
print(list(map(pow, range(5), range(5)))) # [1, 1, 4, 27, 256]# range(5) : 0,1,2,3,4
# 0的0次幂时1

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于javaweb的智慧社区设计与实现

目录 前言 一、技术栈 二、系统功能介绍 客户信息管理 客户信息管理 社区信息管理 车位租买支付 前台车位信息 车位预定提交 问卷调查管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理…

opengauss数据备份(docker中备份)

首先如果想直接在宿主机上进行使用gs_dump备份需要glibc的版本到2.34及以上,查看版本命令为 ldd --version 如图所示,本宿主机并不满足要求,所以转向在docker容器中进行备份, 然后进入opengauss容器中,命令为 docker…

如何看待程序员不写注释

程序员不写注释是一个普遍存在的问题,但并不意味着这是可以接受的。注释对于代码的可读性和可维护性非常重要,因为它们可以帮助其他人理解代码的意图和功能。 以下是一些看待这个问题的观点: 可读性差:没有注释的代码很难阅读和…

ArcGIS API for JavaScript部署开发

官方快速上手教程:https://developers.arcgis.com/javascript/latest/ 官方 API 参考文档:https://developers.arcgis.com/javascript/latest/api-reference 文章目录 0.前言1.引入ArcGIS API for JavaScript部署开发1.1在线引入(via CDN&…

C语言进阶---程序环境和预处理

C语言进阶---程序环境和预处理 前言一、程序的翻译环境、执行环境二、详解:C语言程序的编译链接三、预定义符号介绍四、预处理指令 #define五、宏和函数的对比(思维导图)六、命令定义、预处理指令 #include #undef1.命名约定2.命令行定义 七、…

解决uniapp打包过大问题的实用方法

开发者在使用uniapp开发跨平台应用时,可能会遇到打包过大的问题。过大的应用包不仅会增加用户下载和安装的成本,还会影响应用的性能和加载速度。本篇博客将介绍一些解决uniapp打包过大问题的实用方法,帮助开发者优化应用的大小和性能。 1、移…

[引擎开发] 杂谈ue4中的Vulkan

接触Vulkan大概也有大半年,概述一下自己这段时间了解到的东西。本文实际上是杂谈性质而非综述性质,带有严重的主观认知,因此并没有那么严谨。 使用Vulkan会带来什么呢?简单来说就是对底层更好的控制。这意味着我们能够有更多的手段…

“揭秘淘宝店铺所有商品接口:一键获取海量热销宝贝信息!“

淘宝店铺所有商品接口可以通过shop id或店铺主链接获取到整店商品,数据包括:商品ID,图片地址,店铺标题,优惠价,价格,销量,宝贝链接等整个店铺的商品。 要使用这个接口,需…

【maven私库nexus开机自启动】

linux设置nexus开机自启动_linux centos maven私服nexus安装搭建并设置开机启动 linux centos maven私服nexus安装搭建并设置开机启动,这里是用添加服务的方式开机启动nexus。 1.先要下载jdk并安装,配置java环境变量,直接去oracle下载把&am…

抄写Linux源码(Day17:你的键盘是什么时候生效的?)

回忆我们需要做的事情: 为了支持 shell 程序的执行,我们需要提供: 1.缺页中断(不理解为什么要这个东西,只是闪客说需要,后边再说) 2.硬盘驱动、文件系统 (shell程序一开始是存放在磁盘里的,所以需要这两个东…

使用弹性盒子flex对html进行布局和动态计算视口高度

使用弹性盒子flex对html进行布局的一个练习 height: calc(100vh - 4px); # vh表示视口高度的百分比,所以100vh表示整个视口的高度。 .mytxt { text-indent: 2em; /* 首航缩进2字符 */ line-height: 2; /* 2倍行高 */ padding: 8px; /* 内容与边框的距离 */ } …

SQLServer快速入门

SQL Server快速入门指南:从安装到基本查询 SQL Server是一款强大的关系型数据库管理系统,广泛用于企业和组织中。如果您是初学者或需要快速入门SQL Server,本文将为您提供一个简明的指南,从安装SQL Server到执行基本查询&#xff…

策略模式优雅实践

1 什么是策略模式 策略模式(Strategy Pattern)是一种常用的面向对象设计模式,它定义了一系列可互相替换的算法或策略,并将每个算法封装成独立的对象,使得它们可以在运行时动态地替换。具体来说,策略模式定义…

Flutter学习笔记

此篇文章用来记录学习Flutter 和 Dart 相关知识 零.Dart基本数据类型 Dart 是一种静态类型的编程语言,它提供了一系列基本数据类型,用于存储和操作不同种类的数据。以下是 Dart 中的一些基本数据类型以及它们的详细介绍: 1. 整数类型&#…

爱国者的润学日记-十月

首先需要科学的准备面试和润。如何进行科学的准备工作呢? 高效的按照面试考察内容进行针对性训练,按 Machine-learning-interview准备保证处于专注的心态,如今互联网娱乐发达,之前即使比赛时我也是一边比赛一边看视频。之后准备面…

Django跨域访问 nginx转发 开源浏览器

Django跨域访问 https://blog.csdn.net/lonelysnowman/article/details/128086205 nginx转发 https://blog.csdn.net/faye0412/article/details/75200607/ 开源浏览器 https://www.oschina.net/p/chromiumengine 浏览器油猴开发 https://blog.csdn.net/mukes/article/detail…

L1-035 情人节 c++解法

题目再现 以上是朋友圈中一奇葩贴:“2月14情人节了,我决定造福大家。第2个赞和第14个赞的,我介绍你俩认识…………咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单,请你找出那两位要请客的倒霉蛋。 输入格式: 输入…

3.2.OpenCV技能树--二值图像处理--图像腐蚀与膨胀

文章目录 1.文章内容来源2.图像膨胀处理2.1.图像膨胀原理简介2.2.图像膨胀核心代码2.3.图像膨胀效果展示 3.图像腐蚀处理3.1.图像腐蚀原理简介3.2.图像腐蚀核心代码3.3.图像腐蚀效果展示 4.易错点总结与反思 1.文章内容来源 1.题目来源:https://edu.csdn.net/skill/practice/o…

探秘小米增程汽车与仿生机器人的未来:AI大模型的潜在影响及苹果iPhone15Pro发热问题解决之道

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

nignx如何部署让前端不用清缓存就可以部署

在Nginx中,可以使用以下方法来部署前端应用程序,使前端用户无需清空缓存即可进行部署: 1、使用版本号:在前端应用程序的构建过程中,可以添加一个独特的版本号到应用程序的名称中。每次部署时,将版本号更新…