不要着急!我们在下一讲就会开始编写如假包换的程序了。
这一讲我们了解一下六种常见类型的量的常用方法,以及不同类型之间的关系。
所谓“方法(methods)”,我的理解是对于某一个类型的量的某种操作或判断。比如说,将一个字符串中的全部大写字母转换为小写字母,等等。也许你可以在后续编程中通过循环之类的实现——但是“方法”已经为我们提供了现成的工具。
【说明1】鸽了各位这么久,实在不好意思。一方面,年关将近;另一方面,学校内部也有一些事项需要处理。不过,这一讲总算是能与大家见面了。在此,笔者祝大家新年快乐,龙年吉祥!
【说明2】因为本讲中标题与层次较多,目录较长,因此就不放置了。全文约6000字,主要内容共分为两节。
1. 不同类型的量的常用方法
我们对一个变量(或常量)使用方法,需要通过在变量名称(或常量)后添加点“.”与方法名称来实现。下文提到的方法,均将做相应的演示。
对于方法,你可以在Shell界面中输入help(),再输入相应的类型名称(例如str),双击查看文本(如果有一个“Sqeezed text”按钮的话),在文本中找到“Methods defined here”以查看相应类型的方法。
对于演示的样例,你可以在Shell中进行操作,自行尝试不同的情况。
1.0 在开始前的说明
返回与返回值
在说明一些方法的时候可能会提到这个词。“返回”的意思是,在程序执行到这一条语句之后,会将这一条语句替换为对应的返回值。因此,你需要通过赋值来存放返回的结果。
这个过程就好比是榨汁机。橙子通过榨汁机,返回值是橙汁。你需要拿一个杯子将橙汁装起来,再进行后续的操作。比如说,有这么一段描述:
某类型有【方法名】方法,作用是……,返回【返回值】。
在实际执行语句的时候,就会将【变量名】.【方法名】替换为【返回值】。为了不让某一条语句变为某个值,我们需要将其转化为赋值语句。举个更具体的例子:
整数类型有double()方法(我瞎编的),其作用是将这个数乘以二。返回运算的结果。
那么,我们写程序的时候就要这么写:
a = 3
double_a = a.double()
因为a.double()会最终被6替换,语句变为这个样子:
a = 3
double_a = 6
如果不赋值,语句会变为这个样子:
a = 3
6
如此,就会在“6”的那一行报错。
特别说明:在下文的演示中,由于Shell界面会直接显示返回值(计算结果),因此就不再进行赋值操作。在后续的编程中,请务必记得加上赋值操作(有特殊说明的除外)。
1.1 整数型、浮点型
初学阶段没有常用的方法。这两种类型可以跳过。
1.2 字符型
count()
用途:查看某个字符(串)在目标字符串中出现的次数。返回一个整数型的量。
样例:
>>> s = "I like apples. The apples are really tasty."
>>> s.count("apples")
2
>>> s.count("e")
6
find()
用途:在目标字符串中查找某个字串(或字符)。返回其第一次出现的起始位置(索引)。如果没找到,则返回 -1。
样例:
>>> s = "I like apples. The apples are really tasty."
>>> s.find("apple")
7
>>> s.find("i")
3
>>> s.find("z")
-1
join()
用途:在某个由字符型组成的列表中的各元素之间插入目标字符(串)。返回生成的新字符串。
样例:
>>> l = ["3", "5", "10", "100"]
>>> s = " < "
>>> s.join(l)
'3 < 5 < 10 < 100'
或者直接一点:
>>> " < ".join(["3", "5", "10", "100"])
'3 < 5 < 10 < 100'
lower()
用途:将字符串中的字母全部转换成为小写。返回生成的新字符串。
样例:
>>> s = "BREAKING News Top 10!"
>>> s.lower()
'breaking news top 10!'
upper()
用途:将字符串中的字母全部转换成为大写。返回生成的新字符串。
样例:
>>> s = "BREAKING News Top 10!"
>>> s.upper()
'BREAKING NEWS TOP 10!'
capitalize()
用途:将字符串中的字母转换为首字母(有且仅有第一个字母)大写。返回生成的新字符串。
样例:
>>> s = "I Like Apples. the apples are really tasty."
>>> s.capitalize()
'I like apples. the apples are really tasty.'
swapcase()
用途:将字符串中的字母大小写交换。 返回生成的新字符串。
样例:
>>> s = "i Like AppLes. the aPPles aRe reAlly tasty."
>>> s.swapcase()
'I lIKE aPPlES. THE AppLES ArE REaLLY TASTY.'
replace()
用途:将目标字符串中的某些字符(或字符串)转换为新的字符(或字符串)。 返回生成的新字符串。
样例:
>>> s = "I like apples. The apples are really tasty."
>>> s.replace("apples", "bananas")
'I like bananas. The bananas are really tasty.'
split()
用途:按照给定的分隔符进行判定,将目标字符串分割为若干小字符串。返回包含结果的列表。默认的分隔符是空格“ ”。
样例:
>>> s = "Apple/Book/Cat/Dog/Egg"
>>> s.split("/")
['Apple', 'Book', 'Cat', 'Dog', 'Egg']
在不加分隔符参数的情况下:
>>> s = "Apple Book Cat Dog/Egg"
>>> s.split()
['Apple', 'Book', 'Cat', 'Dog/Egg']
strip()
用途:删去字符串前后的空白字符。 返回生成的新字符串。
样例:
>>> s = " Hello world!!! "
>>> s.strip()
'Hello world!!!'
1.3 布尔型
初学阶段没有常用的方法。可以跳过。
1.4 列表
append()
用途:在列表末尾追加一个元素。没有返回值。
样例:
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
count()
用途:和字符型的count()方法类似,查看某个值在目标列表中出现的次数。返回一个整数型的量。
样例:
>>> l = [3, 1, 4, 1, 5, 9, 2, 6, 5]
>>> l.count(1)
2
>>> l.count(7)
0
index()
用途:查找某个值在列表中第一次出现的位置。如果找到,返回一个整数型的变量(下标);否则,会产生ValueError错误。
样例:
>>> l = [1, 2, 3, 4, 3, 2, 1]
>>> l.index(3)
2
insert()
用途:向给定列表中的目标位置(下标)插入一个元素。使用insert()方法时需要提供两个参数:目标位置的下标以及插入的元素。没有返回值。
样例:
>>> l = [1, 2, 3, 5]
>>> l.insert(3, 4)
>>> l
[1, 2, 3, 4, 5]
以上样例中,我们向l中下标为3的位置插入了元素4。
pop()
用途:移除给定列表中目标位置(下标)的元素。如果成功移除,则返回该元素的值;否则,若列表为空(长度为0)或给定下标过大,则会产生IndexError的错误。
样例:
>>> l = [1, 2, 3, 3, 4]
>>> l.pop(3)
3
>>> l
[1, 2, 3, 4]
以上样例中,pop()方法成功移除了列表l中下标为3的元素:3,并返回了3。移除后,我们看到,列表l变为了[1, 2, 3, 4]。
reverse()
用途:反转列表。记得之前提到过的“列表切片”吗?我们也可以通过[::-1]的方式反转一个列表。没有返回值。
样例:
>>> l = [1, 3, 2, 4]
>>> l.reverse()
>>> l
[4, 2, 3, 1]
sort()
用途:将列表中的元素排序,默认升序。没有返回值。
样例:
>>> l = [1, 3, 2, 4]
>>> l.sort()
>>> l
[1, 2, 3, 4]
之所以说是“默认”,是指我们可以通过参数使之变成降序排序,即参数reverse。参数reverse默认为False,当它为True的时候,就可以实现降序排序。使用时,我们需要手动指定reverse参数。
>>> l = [1, 3, 2, 4]
>>> l.sort(reverse = True)
>>> l
[4, 3, 2, 1]
1.5 字典
get()
用途:获取字典中某个键对应的值。若找到,则返回对应的值;否则,返回事先给定的default值。相比于直接利用中括号获取,使用get()可以很好地防止程序报错。
样例:
>>> d = {"A": 1, "B": 2, "C": 3}
>>> d.get("A", -1)
1
>>> d.get("D", -1)
-1
其中,给定的第一个参数是键,第二个参数是default值(即-1)。
pop()
用途:移除给定字典中目标键对应的键值对。如果成功移除,则返回对应的值;否则,会返回事先给定的default值。当default值没有给定且目标键在给定字典中找不到时,会抛出KeyError错误。因此,使用pop()时请务必设定好default值。
样例:
>>> d = {"A": 1, "B": 2, "C": 3}
>>> d.pop("A", -1)
1
>>> d.pop("D", -1)
-1
>>> d
{'B': 2, 'C': 3}
其中,给定的第一个参数是键,第二个参数是default值(即-1)。
以上样例中,我们通过pop()移除了键为"A"的键值对。由于d中不存在键"D",且给定了default值(即-1),因此第二条pop()运行后返回了default值-1。
update()
用途:将新字典更新到旧字典中。没有返回值。
样例:
>>> d1 = {"A": 1, "B": 2, "C": 3}
>>> d2 = {"C": 4, "D": 5, "E": 6}
>>> d1.update(d2)
>>> d1
{'A': 1, 'B': 2, 'C': 4, 'D': 5, 'E': 6}
以上样例中,我们将d2的内容更新到了d1中。我们看到,对于已经存在的键(如"C"),原字典中的值将会更新("C"对应的值从3变为4);对于未存在的键(如"D""E"),原字典则会添加这些键值对。
items() / keys() / values()
用途:获取目标字典的键值对/键/值内容。返回值为一个可遍历的dict_items/dict_keys/dict_values类型的值(不需要在意这些值的类型)。
样例:我们将在后续讲解循环的时候解释何为遍历及如何遍历。大家可以留个心眼,在后续必要的时候配合循环使用这三种方法。
2. 不同类型之间的常见转换关系
2.1 整数型
2.1.1 整数型→浮点型
float()
我们可以使用float()函数将整数型转换为浮点型。例如:
>>> i = 3
>>> f = float(i)
>>> f
3.0
这个样例中,i为整数型变量;通过使用float()函数,将i的值(即3)转换为浮点型的值(即3.0)。我们将函数的返回值赋值给了变量f,我们能通过最后一行看到f的值为3.0。
2.1.2 整数型→字符型
str()
如果希望获得数字对应的字符串,我们可以使用str()函数。例如:
>>> long = 123454321
>>> long_s = str(long)
>>> long_s
'123454321'
这个样例中,long为整数型变量;通过使用str()函数,将long的值(即123454321)原封不动地转换为对应的字符串(即"123454321")。非常直观。
chr()
另外,记得那张ASCII码表吗?我们可以通过chr()函数,将ASCII码值转换为对应的字符。例如:
>>> a = 99
>>> chr(a)
'c'
在这个样例中,a为整数型变量;我们查表可知,ASCII码表中,99对应字符"c"。因此,chr(a)的结果为99对应的字符"c"。
bin() / oct() / hex()【不常用】
使用这三个函数,将整数分别用二进制 / 八进制 / 十六进制表示。函数返回的结果分别用"0b"(二进制)、"0o"(八进制)、"0h"(十六进制)开头。例如:
>>> bin(10)
'0b1010'
>>> oct(10)
'0o12'
>>> hex(10)
'0xa'
2.1.3 整数型→布尔型
bool()
使用bool()函数,将整数型转换为布尔型。规则是:非零为True,零为False。例如:
>>> bool(0)
False
>>> bool(-1)
True
>>> bool(2)
True
2.2 浮点型
2.2.1 浮点型→整数型
int()
使用int()函数,对浮点数进行向零方向取整。例如:
>>> int(5.2)
5
>>> int(0.1)
0
>>> int(-0.4)
0
>>> int(-2.5)
-2
2.2.2 浮点型→字符型
str()
与整数型同理。例如:
>>> pi = 3.1415
>>> pi_s = str(pi)
>>> pi_s
'3.1415'
2.2.3 浮点型→布尔型
bool()
与整数型同理。规则是:非零为True,零为False。
2.3 字符型
2.3.1 字符型→整数型
int()
如果字符串的内容为整数,则可以通过int()函数直接将其转换为整数。例如:
>>> int("123")
123
>>> int("-32")
-32
ord()
如果该字符型的量为ASCII码表中的单个字符,则可以通过ord()函数获取其ASCII码值(整数)。例如:
>>> ord("A")
65
>>> ord("a")
97
len()
通过使用len()函数,获取字符串的长度。例如:
>>> len("apple")
5
>>> len("")
0
2.3.2 字符型→浮点型
float()
与2.3.1中的int()同理,如果字符串的内容为浮点数,则可以通过float()函数将其转换为对应的浮点数值。例如:
>>> float("123.4")
123.4
>>> float("-15.0")
-15.0
2.3.3 字符型→布尔型
bool()【不常用】
非空字符串对应True,空字符串对应False。
2.3.4 字符型→列表
list()
利用list()函数,可以将一个字符串中的每个字符拆分出来,作为列表中的元素,并返回该列表。例如:
>>> list("apple")
['a', 'p', 'p', 'l', 'e']
>>> list("123")
['1', '2', '3']
2.4 布尔型
2.3.1 布尔型→整数型
int()
True对应1,False对应0。
2.3.2 布尔型→浮点型
float()【不常用】
True对应1.0,False对应0.0。
2.3.3 布尔型→字符型
str()【不常用】
True对应"True",False对应"False"。
2.5 列表
2.5.1 列表→整数型
len()
通过len()函数,获取列表的长度。例如:
>>> len([1, 2, 3])
3
>>> len([])
0
2.6 字典
2.6.1 字典→整数型
len()
通过len()函数,获取字典的长度(键值对的个数)。例如:
>>> len({"a": 1, "b": 2})
2
2.7 一张表小结
下表小结了第二节中提到的类型之间常见的转换关系。当然,除了表中提到的,我们也可以用第一节中提到的各种方法来实现类型之间的转换。
从(下)转换为(右) | int | float | str | bool | list | dict |
---|---|---|---|---|---|---|
int | - | float() | str() chr() bin()/oct()/hex() | bool() | - | - |
float | int() | - | str() | bool() | - | - |
str | int() ord() len() | float() | - | bool() | list() | - |
bool | int() | float() | str() | - | - | - |
list | len() | - | - | - | - | - |
dict | len() | - | - | - | - | - |
3. 总结
在本讲中,我们大致了解了类型常见的方法,以及类型之间的变换与沟通。你可以想象一下,不同类型之间有许多桥梁,我们可以通过这些桥梁获取我们需要的类型的量。
关于“量”的话题,在本讲就告一段落了。各位可以回顾一下自己学到了多少;如果一时半会儿记不住也没关系,我们在后续的实战中会经常使用这些量以及“方法”“桥梁”。通过不断使用,相信各位一定可以熟练、恰当使用以上的知识。
在下一讲中,我们将使用Python来编写一些基础的程序。