学习目标:
- len()#range,list,列表、元组,字符串,包括空格,返回字典的“键值对”个数
学习内容:
- 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()
python--2作业66,69,71,84;85;数据类型:int()float()TrueFalsestr()list()set()dict()tuple()class
python--1作业,注释、输入输出、运算符、运算结果、三目运算符、关系表达、多值交换、偶数、随机数、三目运算、if、elif、else、while、for、break、contince、pass http://t.csdnimg.cn/0KDeU
计算机网络第1章:计算机网络的概念、组成与功能;计算机网络的分类、标准化工作及相关组织
计算机网络第一章:性能指标:带宽、时延、时延带宽积、RTT、吞吐量、速率、信道利用率
计算机网络体系结构——PDU、SDU、PCI、协议、访问、接口、SAP
计算机网络分层结构——OSI/ISO、TCP/IP http://t.csdnimg.cn/hLrqY
2章选择、解答 http://t.csdnimg.cn/ONrER
通信基本概念:数据、信号、码元、信源、信道、信宿、速率、波特、带宽 http://t.csdnimg.cn/TKnyM
数据、信号、码元、信源、信道、信宿、速率、波特、带宽-通信基本概念
HCIA——30奈奎斯特定理、香农定理 http://t.csdnimg.cn/Yqtch
HCIA——20应用层:C/S、P2P、peer http://t.csdnimg.cn/4i4Og
HCIA——21C/S、P2P、peer的选择
DNS层次域名空间、域名服务器、域名解析的原理 http://t.csdnimg.cn/yeWd6
HCIA——23DNS层次域名空间、域名服务器、域名解析的原理的选择、解答 http://t.csdnimg.cn/RXPNV
HCIA——24FTP 的工作原理、功能、TFTP、控制连接、数据连接
HCIA——25FTP 的工作原理、功能、TFTP、控制连接、数据连接的选择、解答
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遍
- 有错误请指出,作者会及时改正