目录
1. 内建原子数据类型
1.1.整数类型和浮点数类型(int 和 float)
表 1-1 关系运算符和逻辑运算符
2. 内建集合数据类型
2.1 列表类型(list)
表 1-2 可应用于任意 Python 序列的运算
表 1-3 Python 列表提供的方法
2.2 字符串类型(string)
表 1-4 Python 字符串提供的方法
2.3 元组类型(tuple)
2.4 集合类型(set)
表 1-5 Python 集支持的运算
表 1-6 Python 集提供的方法
2.5 字典类型(dict)
表 1-7 Python 字典支持的运算
1-8 Python 字典提供的方法
标准的数学运算符,即+、-、*、/以及**(幂),可以和能够 改变运算优先级的括号一起使用。其他非常有用的运算符包括取余(取模)运算符%,以及整除运算符//。注意,当两个整数相除时,其结果是一个浮点数,而整除运算符截去小数部分,只返 回商的整数部分。
Python 通过 bool 类实现对表达真值非常有用的布尔数据类型。布尔对象可能的状态值是 True 或者 False,布尔运算符有 and、or 以及 not。
布尔对象也被用作相等(==)、大于(>)等比较运算符的计算结果。此外,结合使用关系 运算符与逻辑运算符可以表达复杂的逻辑问题。表 1-1 展示了关系运算符和逻辑运算符。
运 算 名 | 运 算 符 | 解 释 |
小于 | < | 小于运算符 |
大于 | > | 大于运算符 |
小于或等于 | <= | 小于或等于运算符 |
大于或等于 | >= | 大于或等于运算符 |
等于 | == | 相等运算符 |
不等于 | != | 不等于运算符 |
逻辑与 | and | 两个运算数都为 True 时结果为 True |
逻辑或 | or | 某一个运算数为 True 时结果为 True |
逻辑非 | not | 对真值取反,False 变为 True,True 变为 False |
列表是零个或多个指向 Python 数据对象的引用的有序集合,通过在方括号内以逗号分隔的一 系列值来表达。空列表就是[]。列表是异构的,这意味着其指向的数据对象不需要都是同一个类, 并且这一集合可以被赋值给一个变量。
注意,当 Python 计算一个列表时,这个列表自己会被返回。然而,为了记住该列表以便后 续处理,其引用需要被赋给一个变量。
由于列表是有序的,因此它支持一系列可应用于任意 Python 序列的运算,如表 1-2 所示。
运 算 名 | 运 算 符 | 解 释 |
索引 | [] | 取序列中的某个元素 |
连接 | + | 将序列连接在一起 |
重复 | * | 重复 N 次连接 |
成员 | in | 询问序列中是否有某元素 |
长度 | len | 询问序列的元素个数 |
切片 | [:] | 取出序列的一部分 |
列表支持一些用于构建数据结构的方法,如表 1-3 所示。
方 法 名 | 用 法 | 解 释 |
append | alist.append(item) | 在列表末尾添加一个新元素 |
insert | alist.insert(i,item) | 在列表的第 i 个位置插入一个元素 |
pop | alist.pop() | 删除并返回列表中最后一个元素 |
pop | alist.pop(i) | 删除并返回列表中第 i 个位置的元素 |
sort | alist.sort() | 将列表元素排序 |
reverse | alist.reverse() | 将列表元素倒序排列 |
del | del alist[i] | 删除列表中第 i 个位置的元素 |
index | alist.index(item) | 返回 item 第一次出现时的下标 |
count | alist.count(item) | 返回 item 在列表中出现的次数 |
remove | alist.remove(item) | 从列表中移除第一次出现的 item |
>>> myList
[1024, 3, True, 6.5]
>>> myList.append(False)
>>> myList
[1024, 3, True, 6.5, False]
>>> myList.insert(2,4.5)
>>> myList
[1024, 3, 4.5, True, 6.5, False]
>>> myList.pop()
False
>>> myList
[1024, 3, 4.5, True, 6.5]
>>> myList.pop(1)
3
>>> myList
[1024, 4.5, True, 6.5]
>>> myList.pop(2)
True
>>> myList
[1024, 4.5, 6.5]
>>> myList.sort()
>>> myList
[4.5, 6.5, 1024]
>>> myList.reverse()
>>> myList
[1024, 6.5, 4.5]
>>> myList.count(6.5)
1
>>> myList.index(4.5)
2
>>> myList.remove(6.5)
>>> myList
[1024, 4.5]
>>> del myList[0]
>>> myList
[4.5]
字符串是零个或多个字母、数字和其他符号的有序集合。这些字母、数字和其他符号被称为 字符。常量字符串值通过引号(单引号或者双引号均可)与标识符进行区分。
由于字符串是序列,因此之前提到的所有序列运算符都能用于字符串。此外,字符串还有一 些特有的方法,表 1-4 列举了其中一些。
方 法 名 | 用 法 | 解 释 |
center | astring.center(w) | 返回一个字符串,原字符串居中,使用空格填充新字符串,使其长度为 w |
count | astring.count(item) | 返回 item 出现的次数 |
ljust | astring.ljust(w) | 返回一个字符串,将原字符串靠左放置并填充空格至长度 w |
rjust | astring.rjust(w) | 返回一个字符串,将原字符串靠右放置并填充空格至长度 w |
lower | astring.lower() | 返回均为小写字母的字符串 |
upper | astring.upper() | 返回均为大写字母的字符串 |
find | astring.find(item) | 返回 item 第一次出现时的下标 |
split | astring.split(schar) | 在 schar 位置将字符串分割成子串 |
列表和字符串的主要区别在于,列表能够被修改,字符串则不能。列表的这一特性被称为可修改性。列表具有可修改性,字符串则不具有。
由于都是异构数据序列,因此元组与列表非常相似。它们的区别在于,元组和字符串一样是 不可修改的。元组通常写成由括号包含并且以逗号分隔的一系列值。与序列一样,元组允许之前 描述的任一操作。
>>> myTuple = (2,True,4.96)
>>> myTuple
(2, True, 4.96)
>>> len(myTuple)
3
>>> myTuple[0]
2
>>> myTuple * 3
(2, True, 4.96, 2, True, 4.96, 2, True, 4.96)
>>> myTuple[0:2]
(2, True)
然而,如果尝试改变元组中的一个元素,就会遇到错误。请注意,错误消息指明了问题的出 处及原因。
>>> myTuple[1]=False
Traceback (most recent call last):
File "", line 1, in -toplevel-
myTuple[1]=False
TypeError: object doesn't support item assignment
集(set)是由零个或多个不可修改的 Python 数据对象组成的无序集合。集不允许重复元素, 并且写成由花括号包含、以逗号分隔的一系列值。空集由 set()来表示。集是异构的,并且可以通过下面的方法赋给变量。
>>> {3, 6, "cat", 4.5, False}
{False, 4.5, 3, 6, 'cat'}
>>> mySet = {3, 6, "cat", 4.5, False}
>>> mySet
{False, 4.5, 3, 6, 'cat'}
尽管集是无序的,但它还是支持之前提到的一些运算,如表 1-5 所示。
运 算 名 | 运 算 符 | 解 释 |
成员 | in | 询问集中是否有某元素 |
长度 | len | 获取集的元素个数 |
| | aset | otherset | 返回一个包含 aset 与 otherset 所有元素的新集 |
& | aset & otherset | 返回一个包含 aset 与 otherset 共有元素的新集 |
- | aset - otherset | 返回一个集,其中包含只出现在 aset 中的元素 |
<= | aset <= otherset | 询问 aset 中的所有元素是否都在 otherset 中 |
集支持一系列方法,如表 1-6 所示。在数学中运用过集合概念的人应该对它们非常熟悉。注 意,union、intersection、issubset 和 difference 都有可用的运算符。
方 法 名 | 用 法 | 解 释 |
union | aset.union(otherset) | 返回一个包含 aset 和 otherset 所有元素的集 |
intersection | aset.intersection(otherset) | 返回一个仅包含两个集共有元素的集 |
difference | aset.difference(otherset) | 返回一个集,其中仅包含只出现在 aset 中的元素 |
issubset | aset.issubset(otherset) | 询问 aset 是否为 otherset 的子集 |
add | aset.add(item) | 向 aset 添加一个元素 |
remove | aset.remove(item) | 将 item 从 aset 中移除 |
pop | aset.pop() | 随机移除 aset 中的一个元素 |
clear | aset.clear() | 清除 aset 中的所有元素 |
>>> mySet
{False, 4.5, 3, 6, 'cat'}
>>> yourSet = {99,3,100}
>>> mySet.union(yourSet)
{False, 4.5, 3, 100, 6, 'cat', 99}
>>> mySet | yourSet
{False, 4.5, 3, 100, 6, 'cat', 99}
>>> mySet.intersection(yourSet)
{3}
>>> mySet & yourSet
{3}
>>> mySet.difference(yourSet)
{False, 4.5, 6, 'cat'}
>>> mySet - yourSet
{False, 4.5, 6, 'cat'}
>>> {3,100}.issubset(yourSet)
True
>>> {3,100}<=yourSet
True
>>> mySet.add("house")
>>> mySet
{False, 4.5, 3, 6, 'house', 'cat'}
>>> mySet.remove(4.5)
>>> mySet
{False, 3, 6, 'house', 'cat'}
>>> mySet.pop()
False
>>> mySet
{3, 6, 'house', 'cat'}
>>> mySet.clear()
>>> mySet
set()
字典是无序结构,由相关的元素对构成,其中每对元素 都由一个键和一个值组成。这种键–值对通常写成键:值的形式。字典由花括号包含的一系列以逗 号分隔的键–值对表达,如下所示。
>>> capitals = {'Iowa':'DesMoines','Wisconsin':'Madison'}
>>> capitals
{'Wisconsin':'Madison', 'Iowa':'DesMoines'}
可以通过键访问其对应的值,也可以向字典添加新的键–值对。访问字典的语法与访问序列 的语法十分相似,只不过是使用键来访问,而不是下标。添加新值也类似。
>>> capitals['Iowa']
'DesMoines'
>>> capitals['Utah']='SaltLakeCity'
>>> capitals
{'Utah':'SaltLakeCity', 'Wisconsin':'Madison', 'Iowa':'DesMoines'}
>>> capitals['California']='Sacramento'
>>> capitals
{'Utah':'SaltLakeCity', 'Wisconsin':'Madison', 'Iowa':'DesMoines',
'California':'Sacramento'}
>>> len(capitals)
4
需要谨记,字典并不是根据键来进行有序维护的。第一个添加的键–值对('Utah':'SaltLakeCity')被放在了字典的第一位,第二个添加的键–值对('California':'Sacramento') 则被放在了最后。键的位置是由散列来决定的。以上示例也说明,len 函数对字典的功能与对其他集合的功能相同。
字典既有运算符,又有方法。表 1-7 和表 1-8 分别展示了它们。keys、values 和 items 方 法均会返回包含相应值的对象。可以使用 list 函数将字典转换成列表。在表 1-8 中可以看到, get 方法有两种版本。如果键没有出现在字典中,get 会返回 None。然而,第二个可选参数可 以返回特定值。
运 算 名 | 运 算 符 | 解 释 |
[] | myDict[k] | 返回与 k 相关联的值,如果没有则报错 |
in | key in adict | 如果 key 在字典中,返回 True,否则返回 False |
del | del adict[key] | 从字典中删除 key 的键–值对 |
方 法 名 | 用 法 | 解 释 |
keys | adict.keys() | 返回包含字典中所有键的 dict_keys 对象 |
values | adict.values() | 返回包含字典中所有值的 dict_values 对象 |
items | adict.items() | 返回包含字典中所有键–值对的 dict_items 对象 |
get | adict.get(k) | 返回 k 对应的值,如果没有则返回 None |
get | adict.get(k, alt) | 返回 k 对应的值,如果没有则返回 alt |
>>> phoneext={'david':1410, 'brad':1137}
>>> phoneext
{'brad':1137, 'david':1410}
>>> phoneext.keys()
dict_keys(['brad', 'david'])
>>> list(phoneext.keys())
['brad', 'david']
>>> phoneext.values()
dict_values([1137, 1410])
>>> list(phoneext.values())
[1137, 1410]
>>> phoneext.items()
dict_items([('brad', 1137), ('david', 1410)])
>>> list(phoneext.items())
[('brad', 1137), ('david', 1410)]
>>> phoneext.get("kent")
>>> phoneext.get("kent", "NO ENTRY")
'NO ENTRY'