为了便于程序处理,主流编程语言均提供了集合型数据类型,如 C# 有数组和 List,Java 有 Map、Set、List 等,PHP 有 array。Python 中的集合型数据类型主要有列表、元组、集合与字典四种。列表在上节教程已经介绍,本节教程主要介绍元组、集合和字典。
Python tuple字典
元组与列表功能相似,区别是列表中的元素可以修改,但元组中的元素不能修改。
元组使用成对的小括号定义,例如:
tuple1 = ('a', 'b', 2000, 2019)
tuple2 = (1, 2, 3, 4, 5)
当元组中只有一个元素时需要在元素后加逗号,否则定义元组的小括号会被当作运算符,例如:
tup1 = (1)
type(tup1) #不加逗号,类型为整型
tup1 = (1,)
type(tup1) #加上逗号,类型为元组
上述代码的运行结果如下所示:
>>> tup1 = (1)
>>> type(tup1) #不加逗号,类型为整型
<class 'int'>
>>> tup1 = (1,)
>>> type(tup1) #加上逗号,类型为元组
<class 'tuple'>
与列表相同,可以使用下标访问元组中的元素,例如:
tuple1 = ('a', 'b', 2000, 2019)
print(tuple1[2])
运行上述代码将得到元素 2000。
可以将多个元组连接组合成一个新的元组,例如:
tuple1 = ('a', 'b', 2000, 2019)
tuple2 = (1, 2, 3, 4)
print(tuple1 + tuple2)
上述代码的运行结果下所示:
>>> tuple1 = ('a', 'b', 2000, 2019)
>>> tuple2 = (1, 2, 3, 4)
>>> print(tuple1 + tuple2)
('a', 'b', 2000, 2019, 1, 2, 3, 4)
删除列表使用 del 语句,例如:
a = ('a', 'b', 'c')
del a
+、*、in等运算符对元组同样起作用,效果与列表类似;len( )、max( )、min( ) 等函数对元组的作用也与列表类似,此处均不再赘述。
Python set集合
集合是包含若干元素的列表,其特点是元素无序且无重复元素。定义集合使用成对的大括号{ }或 set( ) 函数,例如:
drawer = {'pen', 'pencil', 'ruler', 'eraser'}
注意,创建空集合必须使用 set( ) 函数。
Python 中集合的概念基本上反映了集合论对应的概念。两个不同的集合可以执行交、并、补、差等运算,例如:
drawer = {'pen', 'pencil', 'ruler', 'eraser'}
desk = {'pen', 'book ', 'cup'}
drawer | desk #两个集合的并集
drawer & desk #两个集合的交集
drawer ^ desk #两个集合的交集的补集
drawer - desk #两个集合的差集
上述代码的运行结果如下所示:
>>> drawer = {'pen', 'pencil', 'ruler', 'eraser'}
>>> desk = {'pen', 'book', 'cup'}
>>> drawer | desk #两个集合的并集
{'book', 'pen', 'eraser', 'cup', 'ruler', 'pencil'}
>>> drawer & desk #两个集合的交集
{'pen'}
>>> drawer ^ desk #两个集合的交集的补集
{'ruler', 'eraser', 'pencil', 'book', 'cup'}
>>> drawer - desk #两个集合的差集
{'ruler', 'eraser', 'pencil'}
Python 中可以用于集合的函数主要有 add( )、clear( )、copy( )、discard( )、remove( )、pop( )、difference( )、intersection( )、union( ) 等。
add( ) 方法用于为集合添加一个元素,例如:
a={'a', 'b', 'c'}
a.add('d')
print(a)
上述代码的运行结果如下所示:
>>> a={'a', 'b', 'c'}
>>> a.add('d')
>>> print(a)
{'d', 'b', 'a', 'c'}
clear( ) 方法用于清空一个集合,例如:
a={'a', 'b', 'c'}
a.clear()
print(a)
上述代码的运行结果如下所示。
>>> a={'a', 'b', 'c'}
>>> a.clear()
>>> print(a)
set()
copy( ) 方法用于复制一个集合,例如:
a={'a', 'b', 'c'}
b = a.copy()
print(b)
上述代码的运行结果如下所示:
>>> a={'a', 'b', 'c'}
>>> b = a.copy()
>>> print(b)
{'b', 'a', 'c'}
discard( ) 方法用于删除集合中一个指定元素,例如:
a={'a', 'b', 'c'}
a.discard('b')
print(a)
上述代码的运行结果如下所示:
>>> a={'a', 'b', 'c'}
>>> a.discard('b')
>>> print(a)
{'a', 'c'}
remove( ) 方法与 discard( ) 方法作用相同,区别在于 remove() 方法在移除集合中一个不存在的元素时会发生错误,而 discard( ) 方法不会。
pop() 方法用于从集合中随机移除一个元素,例如:
a={'a', 'b', 'c', 'd' 'e', 'f', 'g'}
a.pop('b')
print(a)
多次运行上述代码的结果如下所示:
>>> a={'a', 'b', 'c', 'd','e', 'f', 'g'}
>>> a.pop()
'a'
>>> print(a)
{'b', 'f', 'c', 'd', 'g', 'e'}
>>> a={'a', 'b', 'c', 'd','e', 'f', 'g'}
>>> a.pop()
'c'
>>> print(a)
{'g', 'a', 'e', 'b', 'd', 'f'}
difference( )、intersection( )、union( ) 等方法分别用于计算两个集合的差集、交集和并集,效果与“-”“&”“|”等运算符相似,此处不再赘述。
Python dict字典
字典可以存储任意类型的对象,字典中的键值对分别存储字符串型下标及对应的内容。字典中的每个键和值之间使用冒号“:”分隔,键值对之间使用逗号“,”分隔,整个字典使用成对的大括号{ }定义,例如:
dict = {'A': '123', 'B': '45', 'C': '678'}
要访问字典中的值,需要使用中括号语法,例如:
print(dict['B'])
运行上述代码将返回字符串“45”。
添加或修改字典中某个键值对中的值也是使用中括号语法,例如:
dict = {'A': '123', 'B': '45', 'C': '678'}
dict['D'] = '9'
当该键存在时修改对应的值,不存在时将该键值对添加到字典。
与列表、元组、集合相同,清空字典的内容使用 clear( ) 方法,删除字典使用 del 命令,例如:
dict = {'A': '123', 'B': '45', 'C': '678'}
dict.clear() #清空dict的内容
del dict['A'] #删除dict字典中A键和对应的值
del dict #删除dict字典
字典有以下两个特点:一是其中的键名不能重复,创建字典时若同一个键被多次赋值,则其值为最后一次赋值的内容;二是键一旦定义即不可更改,若要修改键名则意味着删除原键值对并新建键值对。