python--5--len()

news2024/11/21 1:46:29

学习目标:

  • len()#range,list,列表、元组,字符串,包括空格,返回字典的“键值对”个数

学习内容:

  1. len()#range,list,列表、元组,字符串,包括空格,返回字典的“键值对”个数

len()--返回对象长度

len()#range,list,列表、元组,字符串,包括空格,返回字典的“键值对”个数

len(object)

s = 'abcdef'
print(len(s))
>>>
6

lst = [1, 2, 3, 4]
tup = (1, 2, 3, 4)
st = set([1, 2, 3, 4])
len(lst) == len(tup)
len(st) == len(tup)
>>>
True
True

dic = {1: 'a', 2: 'b', 3: 'c'}
len(dic)
>>>
3
返回字典的“键-值对”个数。

其中,object可以是字符串、列表、元组、集合、字典或其他可迭代对象。

例如,我们可以使用len()函数来获取字符串中字符的数量:

s = "Hello, World!"

print(len(s)) # 输出 13

同样,我们也可以使用len()函数来获取列表、元组或集合中元素的数量:

lst = [1, 2, 3, 4, 5]

print(len(lst)) # 输出 5

tup = (1, 2, 3, 4, 5)

print(len(tup)) # 输出 5

set1 = {1, 2, 3, 4, 5}

print(len(set1)) # 输出 5

对于字典,len()函数将返回字典中键值对的数量:

d = {'a': 1, 'b': 2, 'c': 3}

print(len(d)) # 输出 3

总之,len()函数是一个很常用的函数,可以用来获取容器对象中元素的数量。

除了常见的容器对象之外,len()函数还可以用于其他对象,具体如下:

字符串

s = "Hello, World!"

print(len(s)) # 输出 13

列表

lst = [1, 2, 3, 4, 5]

print(len(lst)) # 输出 5

元组

tup = (1, 2, 3, 4, 5)

print(len(tup)) # 输出 5

集合

set1 = {1, 2, 3, 4, 5}

print(len(set1)) # 输出 5

字典

d = {'a': 1, 'b': 2, 'c': 3}

print(len(d)) # 输出 3

range对象

r = range(1, 6)

print(len(r)) # 输出 5

bytes和bytearray对象

b = b'hello'

print(len(b)) # 输出 5

ba = bytearray(b'hello')

print(len(ba)) # 输出 5

其他可迭代对象

例如,使用len()函数可以获取生成器中元素的数量:

gen = (x for x in range(10))

print(len(gen)) # 报错 TypeError: object of type 'generator' has no len()

需要注意的是,不是所有的可迭代对象都可以使用len()函数来获取元素的数量。如果对象没有定义__len__()方法,那么len()函数将无法获取其元素的数量,并且会报错。例如,上面的例子中,由于生成器没有定义__len__()方法,因此len()函数无法获取其元素的数量,会报错。

len()函数的语法
函数很简单,语法如下:
len(obj)
没错,传入一个obj参数。根据源代码中的解释,这个obj应该理解为一个容器(container),我们来看下源代码中,关于len()函数的注释。
Return the number of items in a container.
返回容器中的项目数
这样的解释简洁明了,比我们总结的好多了。
参数obj传入一个具体对象的实例,这个对象可以是Python内置类型,也可以是我们自定义的类型。
当然,如果是自定义类型,这里我们需要重写对象的__len__()方法才可以使用len()函数获取项目数或执行其它操作。
返回字符串的长度
可以使用len()获取一个字符串的长度
定义一个字符串
s = 'abcdef'
print(len(s))
>>>
6
获取编码的字节数
我们知道,汉字和英文字符在计算长度时,存在差异。比如:
s = '这是一段汉字'
计算长度
len(s)
>>>
6
输出结果为6,刚好6个字符。
但是,我们将汉字编码后,得到的结果会有变化:

True
我们看到,len()函数返回了序列容器的项目个数。
len(s.encode())
>>>
18
可以看到,
再使用GBK编码方式,我们试试看
len(s.encode("gbk"))
>>>
12
当使用GBK编码后,len()函数返回了12。
可以看出,len()在计算编码后的文字个数时,统计的是字节数。UTF-8编码后的汉字,每个文字占3个字节。使用GBK编码后,每个文字占2个字节。这里我们使用len()函数就计算了文字编码后的字节数。

返回列表、元组(序列对象)中项目的个数
同样,len()函数还可以返回列表、元组、集合等序列对象实例的个数
例如:
lst = [1, 2, 3, 4]
tup = (1, 2, 3, 4)
st = set([1, 2, 3, 4])
len(lst) == len(tup)
len(st) == len(tup)
>>>
True
True
我们看到,len()函数返回了序列容器的项目个数。

返回字典(映射对象)的键的个数
在此基础上,len()函数还可以返回映射类对象的“键-值对”个数
举个简单的例子:
dic = {1: 'a', 2: 'b', 3: 'c'}
len(dic)
>>>
3
返回字典的“键-值对”个数。

返回自定义对象的“魔法”方法__len__()的返回值
我们知道,Python是完全面向对象的,比较其它编程语言,有一个很有意思的功能,就是类的“魔法方法”(类似__XXX__这样的)。
使用len()函数对不同的类容器计算项目数,本质上来讲就是调用了__len__()方法。
对于自定义的类,我们可以重写__len__()方法,让其实现特有的功能,当使用len()函数时,会执行相应的方法,以达到“偷梁换柱”的目的。
我们自定义一个类,重写__len__()方法,使用len()函数测试,结果如下:

 

类似int、str、list、tuple、dict这样的内置类型,在使用len()函数计算实例长度时,其实就是调用了类定义里面的__len__()方法。
重写__len__()方法可以扩展类的功能,在调用len()函数时,就会执行重写的内容。 


学习时间:

学习时间为不运动的时候,作者咕咕了是去运动(无氧运动和有氧运动都做最好)了,请饶恕。


学习产出:

画工

python--4函数def,本质、值传递、引用传递、默认值参数、*参数名、**变量、lambda [参数]: 函数、偏函数、递归、递归练习                                               http://t.csdnimg.cn/5NUWo

python---3--sort、lambdalen(list1)、sorted_numbers = sorted(numbers)、list.sort()

                                                                                              http://t.csdnimg.cn/WpVQK

python--2作业66,69,71,84;85;数据类型:int()float()TrueFalsestr()list()set()dict()tuple()class 

                                                                                            http://t.csdnimg.cn/R005I

python--1作业,注释、输入输出、运算符、运算结果、三目运算符、关系表达、多值交换、偶数、随机数、三目运算、if、elif、else、while、for、break、contince、pass                                                                                                   http://t.csdnimg.cn/0KDeU


  计算机网络第1章:计算机网络的概念、组成与功能;计算机网络的分类、标准化工作及相关组织

                                                                                                       http://t.csdnimg.cn/uZOAM

计算机网络第一章:性能指标:带宽、时延、时延带宽积、RTT、吞吐量、速率、信道利用率

                                                                                                                                                                                                                           http://t.csdnimg.cn/avNeb

计算机网络体系结构——PDU、SDU、PCI、协议、访问、接口、SAP

                                                                                                          http://t.csdnimg.cn/x3Uar

 计算机网络分层结构——OSI/ISO、TCP/IP                                                                                                                                                   http://t.csdnimg.cn/hLrqY

 1章选择                                                                                          http://t.csdnimg.cn/cnmdJ

2章选择、解答                                                                                http://t.csdnimg.cn/ONrER

   通信基本概念:数据、信号、码元、信源、信道、信宿、速率、波特、带宽                                                                                                        http://t.csdnimg.cn/TKnyM

 数据、信号、码元、信源、信道、信宿、速率、波特、带宽-通信基本概念

                                                                                                         http://t.csdnimg.cn/Kc2e3

HCIA——30奈奎斯特定理、香农定理                                              http://t.csdnimg.cn/Yqtch

HCIA——20应用层:C/S、P2P、peer                                                                                                                                                                                       http://t.csdnimg.cn/4i4Og

HCIA——21C/S、P2P、peer的选择     

                                                                                                                                                                                                                          http://t.csdnimg.cn/4a11f                                                                

 DNS层次域名空间、域名服务器、域名解析的原理                        http://t.csdnimg.cn/yeWd6

 HCIA——23DNS层次域名空间、域名服务器、域名解析的原理的选择、解答                                                                                                                              http://t.csdnimg.cn/RXPNV 

 HCIA——24FTP 的工作原理、功能、TFTP、控制连接、数据连接

                                                                                                                                                                                                                    http://t.csdnimg.cn/9TPlw

HCIA——25FTP 的工作原理、功能、TFTP、控制连接、数据连接的选择、解答 

                                                                                                    http://t.csdnimg.cn/8GkAU

HCIA——26E-mall、MIME、POP3、IMAP、电子邮件系统的组成结构、电子邮件的发送,接收过程、MIME 与SMTP 的关系                                                  http://t.csdnimg.cn/smTaR

HCIA——27E-mall、MIME;POP3、IMAP的选择,解答 http://t.csdnimg.cn/xnsXP

 HCIIA——28HTTP、万维网、HTML;万维网的工作过程;HTTP 的特点——无连接-TCP、无状态-Cookie、非持久连接-非流水线和流水线;HTTP 的报文结构                                                                                                      http://t.csdnimg.cn/cRcxY

  • 技术笔记 1遍
  • 有错误请指出,作者会及时改正

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

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

相关文章

matlab学习(三)(4.9-4.15)

一、空域里LSB算法的原理 1.原理: LSB算法通过替换图像像素的最低位来嵌入信息。这些被替换的LSB序列可以是需要加入的水印信息、水印的数字摘要或者由水印生成的伪随机序列。 2.实现步骤: (1)将图像文件中的所有像素点以RGB形…

华为海思数字芯片设计笔试第四套

声明 下面的题目作答都是自己认为正确的答案,并非官方答案,如果有不同的意见,可以评论区交流。 这些题目也是笔者从各个地方收集的,感觉有些题目答案并不正确,所以在个别题目会给出自己的见解,欢迎大家讨论…

1688采集API 接口:轻松实现电商数据采集与官方订单API接口对接

各大平台电商软件大全,优质服务 1688采集API接口,一款助力电商从业者轻松实现阿里巴巴与1688平台商品数据采集接口,在数据为王的电商时代,掌握高效的采集与管理技能,无疑是成功的一把钥匙。 功能概述: 1.…

神经射频脉冲术,破解疼痛之锁

一位十余年糖尿病病史的患者,右足开始出现疼痛和麻木的症状三个多月,给他的生活带来了极大的困扰。他曾在多家医院就诊,但治疗效果并不理想。直到他走进了北京精诚博爱医院,这里为他带来了希望和转机。 经过详细的检查&#xff0c…

分享一款免费阅读的软件:Legado,已免费开源(文末有福利)

对于喜欢阅读的人来说,一定经历过从一本厚厚的修仙书籍到MP3、MP4的阅读时代,再到现今的手机软件。 但是现在的阅读软件经常会遇见以下问题:比如广告弹窗太多,排版乱,甚至很多的APP都进入会员时代,再加上一…

使用odbc链接dm8数据库

一、环境说明 windows11 VMware Workstation 17 Pro ubuntu22.04 docker $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammy因docker版本的dm8中,没有…

操作系统(Operating System)专题篇——同步与互斥1

目录 0.前言 1.同步与互斥问题总览 2.生产者-消费者问题 2.1 单生产者-单消费者-多资源 2.2 多生产者-多消费者-单资源 2.3 吸烟者问题(单生产者-多消费者-单资源) 2.4 和尚打水问题(多生产者-多消费者-多资源) 3.读写者问题 3.1 读者优先 3.2 写者优先 3.3 过桥问题…

【SpringBoot:详解Bean装配】

&#x1f3e1;Java码农探花&#xff1a; &#x1f525; 推荐专栏&#xff1a;<springboot学习> &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、IoC容器的简介BeanFactory接口源码二、Bean装配扫描装配探索启动类条件装配自定义Bean总…

springboot 人大金仓 kingbase-备份还原,命令中带密码

命令带密码参考 Java代码实现国产人大金仓数据库备份还原需求-CSDN博客文章浏览阅读818次&#xff0c;点赞16次&#xff0c;收藏12次。本人在一次项目中&#xff0c;遇到了需要在系统管理中提供给用户备份还原系统数据的功能&#xff0c;由于项目特殊性&#xff0c;项目底层数…

如何使用电商接口获取商品信息,价格,主图?

1、什么是电商接口&#xff1f; 电商接口是指用于实现电商平台与其他系统之间进行数据交互和功能调的一组规范和方法。通过电商接口&#xff0c;可以实现商品信息的获取、订单管理、支付处理、物流跟踪等功能。 常见的电商接口包括&#xff1a; 商品接口&#xff1a;用于获取…

BLDC的机械角度、电角度与换相时间

6步换相梯形控制&#xff0c;6步一个周期定义为电角度360 总电角度 极对数 * 机械角度 机械角度是指360&#xff0c;一个圆周角&#xff1b; 电角度度指转子转动的角度&#xff0c;从一个N极到下一个N极是360。从N极只到 S极&#xff0c;则转子只运行了180。由于一个电机中通…

Python数据分析案例40——电商直播间成交金额预测

承接上一篇案例电商直播间提取的特征&#xff0c;进而做一篇机器学习的案例&#xff0c;来预测直播间的成交金额。 Python数据分析案例39——电商直播间评论可视化分析&#xff08;LDA&#xff09; 1. 引言 1.1 直播电商与传统电商的比较 直播电商作为一种新兴的电子商务模式…

本地web项目启起来后,无法在浏览器(chrome)看到源码,从而无法打断点;Framework Ignore list

问题描述 本地web项目启起来后&#xff0c;无法在浏览器(chrome)看到源码&#xff0c;从而无法打断点 其他浏览器没看&#xff0c;开发环境一致专注于chrome&#xff08;其余浏览器有测试同事提缺陷了&#xff0c;才会去看&#xff09;&#xff0c;其余浏览器有没有这个问题&…

B端:拖拽功能有哪些框架扩展,用起来爽歪歪。

B端系统拖拽交互功能是指在企业级系统中&#xff0c;用户可以通过拖拽元素来实现交互操作的功能。这种交互方式可以提高用户的操作效率和用户体验&#xff0c;常见的应用场景包括拖拽排序、拖拽调整大小、拖拽改变位置等。 在实现拖拽交互功能时&#xff0c;可以使用多种技术和…

必备工具!16.8k star 的项目!帮助你快速清理重复文件

大家的笔记本是不是都使用了好多年&#xff1f;是不是硬盘里的文件越来越多&#xff0c;尤其是经常有一些重复的文件散落在系统的各个角落&#xff0c;不好找&#xff0c;也很占据空间。今天就给大家介绍一款好用的开源工具&#xff0c;帮助你简单快速的清理电脑里的重复文件—…

Vue3+.NET6前后端分离式管理后台实战(十三)

1&#xff0c;Vue3.NET6前后端分离式管理后台实战&#xff08;十三&#xff09;已经在公众号发布有兴趣的可以关注一下&#xff01; 有兴趣的可以扫码关注&#xff01;

探索网络爬虫:技术演进与学习之路

网络爬虫及IP代理池 前言爬虫技术的演进最新的爬虫技术爬虫技术学习路线 前言 在信息时代&#xff0c;网络爬虫技术作为获取和处理网络数据的重要手段&#xff0c;已经成为数据科学、机器学习和许多商业应用的基石。从简单的HTML页面抓取到复杂的动态内容采集&#xff0c;爬虫…

Flex弹性布局详解

详解Flex弹性布局 1. 什么是Flex布局2. Flex布局核心概念1&#xff09;容器和属性定义2&#xff09;主轴和交叉轴定义3&#xff09;容器属性4&#xff09;项目属性 3. 优缺点 1. 什么是Flex布局 Flex全称为 “Flexible Box Layout”&#xff0c;即 “弹性盒布局”&#xff0c;旨…

Java应用CPU飙升和死锁排查实战教程

引言 在日常开发中&#xff0c;我们可能会遇到Java应用CPU飙升和死锁的问题。本文将通过实际案例&#xff0c;为大家介绍如何排查这些问题 Java应用CPU飙升和死锁排查步骤 先执行top命令&#xff0c;找到CPU占用比较高的进程再执行jstack 进程id > dump.txt找到进程中CPU…

软考127-上午题-【软件工程】-McCabe度量法

一、McCabe度量法 1-1、定义 McCabe 度量法是通过定义环路复杂度&#xff0c;建立程序复杂性的度量。 它基于一个程序模块的程序图中环路的个数。计算有向图G的环路复杂性的公式为&#xff1a; V(G) m - n 2 闭合区域 1 其中V(G)是有向图 G 中的环路个数&#xff0c;m 是…