返回介绍

4.3 那些年错过的对象

发布于 2023-06-02 10:04:34 字数 17015 浏览 0 评论 0 收藏 0

1.列表对象

我们从最初的"Hello World!",一路狂奔到对象面前。俗话说,人生就像一场旅行,重要的是沿途的风景。事实上,前面几章已经多次出现对象。只不过,那时候没有引入对象的概念,所以只能遗憾错过。是时候回头看看,我们错过的那些对象了。

我们先来看一个熟人,数据容器中的列表。它是一个类,用内置函数可以找到类的名字:


>>>a = [1, 2, 5, 3, 5]
>>>type(a)

根据返回的结果,我们知道a属于list类型,也就是列表类型。其实,所谓的类型就是对象所属的类的名字。每个列表都属于这个list类。这个类是Python自带的,已经提前定义好的,所以称为内置类。当我们新建一个表时,实际上是在创建list类的一个对象。我们还可以用其他两个内置函数来进一步调查类的信息:dir()和help()。函数dir()用来查询一个类或者对象的所有属性。你可以尝试一下:


>>>dir(list)

我们已经用help()函数来查询了函数的说明文档。它还可以用于显示类的说明文档。你可以尝试一下:


>>>help(list)

返回的不但有关于list类的描述,还简略说明了它的各个属性。顺便提一下,制作类的说明文档的方式,与制作函数说明文档类似,我们只需在类定义下用多行字符串加入自己想要的说明就可以了:


class HelpDemo(object):
    """
    This is a demo for using help() on a class
    """
    pass

print(help(HelpDemo))

程序中的pass是Python的一个特殊关键字,用于说明在该语法结构中“什么都不做”。这个关键字保持了程序结构的完整性。

通过上面的查询,我们看到类还有许多“隐藏技能”。比如下面一些list的方法,可以返回列表的信息:


>>>a = [1, 2, 3, 5, 9.0, "Good", -1, True, False, "Bye"]
>>>a.count(5)       # 计数,看总共有多少个元素5
>>>a.index(3)       # 查询元素3第一次出现时的下标

有些方法还允许我们对列表进行修改操作:


>>>a.append(6)             # 在列表的最后增添一个新元素6
>>>a.sort()                # 排序
>>>a.reverse()             # 颠倒次序
>>>a.pop()                 # 去除最后一个元素,并将该元素返回。
>>>a.remove(2)             # 去除第一次出现的元素2
>>>a.insert(0,9)           # 在下标为0的位置插入9
>>>a.clear()               # 清空列表

通过对方法的调用,列表的功能大为增强。再次从对象的角度来认识列表,感觉就像一次美好的聚会。

2.元组与字符串对象

元组与列表一样,都是序列。但元组不能变更内容。因此,元组只能进行查询操作,不能进行修改操作:


>>>a = (1, 3, 5)
>>>a.count(5)       # 计数,看总共有多少个元素5
>>>a.index(3)       # 查询元素3第一次出现时的下标

字符串是特殊的元组,因此可以执行元组的方法:


>>>a="abc"
>>>a.index("c")

尽管字符串是元组的一种,但字符串(string)有一些方法能改变字符串。这听起来似乎违背了元组的不可变性。其实,这些方法并不是修改字符串对象,而是删除原有字符串,再建立一个新的字符串,所以并没有违背元组的不可变性。

下面总结了字符串对象的方法。str为一个字符串,sub为str的一个子字符串。s为一个序列,它的元素都是字符串。width为一个整数,用于说明新生成字符串的宽度。这些方法经常用于字符串的处理。


>>>str = "Hello World!"
>>>sub = "World"

>>>str.count(sub)           # 返回:sub在str中出现的次数
>>>str.find(sub)            # 返回:从左开始,查找sub在str中第一次出现的位置。
                               #如果str中不包含sub,返回 -1
>>>str.index(sub)           # 返回:从左开始,查找sub在str中第一次出现的位置。
                               #如果str中不包含sub,举出错误
>>>str.rfind(sub)           # 返回:从右开始,查找sub在str中第一次出现的位置
                               #如果str中不包含sub,返回 -1
>>>str.rindex(sub)          # 返回:从右开始,查找sub在str中第一次出现的位置
                               # 如果str中不包含sub,举出错误
>>>str.isalnum()            # 返回:True,如果所有的字符都是字母或数字
>>>str.isalpha()            # 返回:True,如果所有的字符都是字母
>>>str.isdigit()            # 返回:True,如果所有的字符都是数字
>>>str.istitle()            # 返回:True,如果所有的词的首字母都是大写
>>>str.isspace()            # 返回:True,如果所有的字符都是空格
>>>str.islower()            # 返回:True,如果所有的字符都是小写字母
>>>str.isupper()            # 返回:True,如果所有的字符都是大写字母
>>>str.split([sep, [max]])     # 返回:从左开始,以空格为分隔符(separator),# 将str分割为多个子字符串,总共分割max次。# 将所得的子字符串放在一个表中返回。可以以
                                  # str.split(",")的方式使用其他分隔符
>>>str.rsplit([sep, [max]])    # 返回:从右开始,以空格为分隔符(separator),# 将str分割为多个子字符串,总共分割max次。# 将所得的子字符串放在一个表中返回。可以以
                                  # str.rsplit(",")的方式使用其他分隔符
>>>str.join(s)                 # 返回:将s中的元素,以str为分隔符,
                                  # 合并成为一个字符串。
>>>str.strip([sub])   # 返回:去掉字符串开头和结尾的空格。
                         # 也可以提供参数sub,去掉位于字符串开头和结尾的sub
>>>str.replace(sub, new_sub)   # 返回:用一个新的字符串new_sub替换str中
                                  # 的sub
>>>str.capitalize()            # 返回:将str第一个字母大写
>>>str.lower()                 # 返回:将str全部字母改为小写
>>>str.upper()                 # 返回:将str全部字母改为大写
>>>str.swapcase()              # 返回:将str大写字母改为小写,小写字母改为大写
>>>str.title()                 # 返回:将str的每个词(以空格分隔)的首字母# 大写
>>>str.center(width)           # 返回:长度为width的字符串,将原字符串放入# 该字符串中心,其他空余位置为空格。
>>>str.ljust(width)      # 返回:长度为width的字符串,将原字符串左对# 齐放入该字符串,其他空余位置为空格。
>>>str.rjust(width)      # 返回:长度为width的字符串,将原字符串右对齐放入# 该字符串,其他空余位置为空格。

3.词典对象

词典同样是一个类:


>>>example_dict = {"a":1, "b":2}
>>>type(example_dict)

我们可以通过词典的keys()方法,来循环遍历每个元素的键:


for k in example_dict.keys():
    print(example_dict[k])

通过values()方法,可以遍历每个元素的值。或者用items方法,直接遍历每个元素:


for v in example_dict.values():
    print(v)

for k,v in example_dict.items():
    print(k, v)

我们也可以用clear()方法,清空整个词典:


example_dict.clear()          # 清空example_dict,example_dict变为{}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文