数据集合类似一个装有多个对象的容器,而容器包括数组和集合,数组是固定长度的,而集合是可变长度的。在Python中,已经没有内置对数组的支持,但可以使用列表List代替。Python的数据集合主要包括四种类型:list、tuple、dict、set,下面将分别对四种集合类型进行详细讲解。
list的元素以英文逗号分隔,存放在一对中括号"[ ]"中。集合中元素是允许重复的,且各元素的顺序就是添加元素的顺序,能够根据索引位置快速访问集合中的元素,也可以追加、插入及删除集合中的元素。
citys = ['广州','深圳','珠海','汕头','佛山','广州']
# 访问集合中的元素
a = len(citys)
print('元素个数:'+ str(a))
print('第3个索引位置元素:'+ citys[2])
print('倒数第1个索引位置元素:'+ citys[-1])
# 注:如果访问的索引位置越界则会报错"list index out of range"
元素个数:6
第3个索引位置元素:珠海
倒数第1个索引位置元素:广州
citys = ['广州','深圳','珠海','汕头','佛山','广州']
b = citys.index('深圳') # 查找元素在列表中的位置
print(b)
c = citys.count('广州') # 统计指定元素在列表中的个数
print(c)
1
2
citys = ['广州','深圳','珠海','汕头']
# 操作集合中的元素
citys.append('湛江') # 追加元素
print(citys)
citys.insert(3,'东莞') #在第3个索引位置后插入元素
print(citys)
citys.extend(['江门','中山'])
print(citys)
['广州', '深圳', '珠海', '汕头', '湛江']
['广州', '深圳', '珠海', '东莞', '汕头', '湛江']
['广州', '深圳', '珠海', '东莞', '汕头', '湛江', '江门', '中山']
citys[0] = '深圳' # 替换指定位置元素,第1个索引位置
print(citys)
['深圳', '深圳', '珠海', '东莞', '汕头', '湛江', '江门', '中山']
citys.remove('珠海') # 删除指定元素
print(citys)
citys.pop() # 删除最后元素
print(citys)
citys.pop(1) # 删除指定位置元素,第2个索引位置
print(citys)
del citys[2] # 根据索引删除列表元素
print(citys)
citys.clear()# 清空列表元素
print(citys)
['广州', '深圳', '东莞', '汕头', '湛江', '江门', '中山']
['广州', '深圳', '东莞', '汕头', '湛江', '江门']
['广州', '东莞', '汕头', '湛江', '江门']
['广州', '东莞', '湛江', '江门']
[]
citys = ['广州','深圳','珠海','汕头','佛山']
# 对列表进行排序
# 排序规则reverse,reverse = True 降序, reverse = False 升序(默认)。
citys.sort()
print(citys)
citys.sort(reverse = True)
print(citys)
citys_n = citys.reverse() # reverse反转队列
print(citys)
['佛山', '广州', '汕头', '深圳', '珠海']
['珠海', '深圳', '汕头', '广州', '佛山']
['佛山', '广州', '汕头', '深圳', '珠海']
tuple的元素以英文逗号分隔,存放在一对括号"( )"中。与list的用法非常相似,都可以访问集合中的元素,但tuple初始化后元素就不可以修改,没有append、insert、remove、pop、sort等方法。换言之,tuple的不可篡改性确保了数据安全。
city_tuple = ('广州','深圳','东莞','佛山')
print(city_tuple)
print(city_tuple[0])
print(city_tuple[2])
('广州', '深圳', '东莞', '佛山')
广州
东莞
city_tuple = ('广州','深圳','东莞','佛山')
print(city_tuple.index('广州')) # 元素在元组中的位置
print(len(city_tuple)) # 元组的元素个数
print(city_tuple.count('广州')) # 元素在元组中的个数
print(max(city_tuple)) # 元组中的最大值
print(min(city_tuple)) # 元组中的最小值
0
4
1
深圳
东莞
dict即字典,以键值对(key/value)方式存放,键与值间以英文冒号分隔,键值对以英文逗号分隔,存放在一对大括号"{ }"中,dict是通过哈希表方式快速查找键的映射关系。
city_dict = {'A':'广州','B':'深圳','S':'东莞','E':'佛山'}
print(city_dict) # 字典的元素
print(len(city_dict)) # 字典的长度
print(city_dict['E']) # 通过键获取对应值,但不存在键时会报错
{'A': '广州', 'B': '深圳', 'S': '东莞', 'E': '佛山'}
4
佛山
contain = 'B' in city_dict # 使用关键字in,判断字典是否存在该键
print(contain)
print(city_dict.get('K')) # 使用方法get取值,若不存在不会报错,报None
print(city_dict.get('K', '未知')) # 使用方法get取值,若不存在时返回设置值
True
None
未知
print(city_dict.keys())
print(city_dict.values())
dict_keys(['B', 'S', 'E', 'G'])
dict_values(['深圳', '东莞', '佛山', '湛江'])
city_dict = {'A':'广州','B':'深圳','S':'东莞','E':'佛山'}
city_dict['G'] = '茂名' # 键不存在时添加键值对
print(city_dict)
city_dict['G'] = '湛江' # 键存在则修改对应值
print(city_dict)
city_dict.pop('A') # 对指定键进行删除
print(city_dict)
{'A': '广州', 'B': '深圳', 'S': '东莞', 'E': '佛山', 'G': '茂名'}
{'A': '广州', 'B': '深圳', 'S': '东莞', 'E': '佛山', 'G': '湛江'}
{'B': '深圳', 'S': '东莞', 'E': '佛山', 'G': '湛江'}
set的元素以英文逗号分隔,存放在一对大括号"[ ]"中。与dict的用法类似,是存储Key的集合,没有Value。集合的数据不会重复,可以去重list数据,可以存放dict的key。
set_0 = {'1a','2b','3c'}
print(set_0)
list_a = ['1a','2b','3c','2b','2c','3c','1a'] # 存在重复元素的list
set_a = set(list_a) # 将list转换为set,可以快速去重元素
print(set_a)
contain = '1a' in set_a # 使用关键字in,判断字典是否存在该键
print(contain)
set_b = set(['1a','4d'])
set_c = set_a | set_b # 取两个集中的并集
print(set_c)
set_d = set_a & set_b # 取两个集中的交集
print(set_d)
{'3c', '2b', '1a'}
{'3c', '2c', '2b', '1a'}
True
{'3c', '1a', '2c', '2b', '4d'}
{'1a'}
set_x = {'3c', '2c', '2b', '4a'}
set_x.add('1b') # 删除元素,如果存在则忽略
print(set_x)
set_x.remove('3c') # 删除指定元素,如果不存在元素会报错
print(set_x)
set_x.pop() # 随机删除第一个元素
print(set_x)
{'2c', '4a', '3c', '1b', '2b'}
{'2c', '4a', '1b', '2b'}
{'4a', '1b', '2b'}
list、tuple、set三种集合类型可以直接相互转化;dict转为list、tuple、set时只转换key,而list、tuple、set转为dict时valus可批量赋值。
list_a = ['a', 'b', 'c', 'd']
tuple_b = ('a1', 'b1', 'c1', 'd1')
set_c = {'a1', 'b2', 'c3', 'd4'}
dict_d = {"a": "11", "b": "12", "c": "13", "d": "14"}
print(list(list_a))
print(list(tuple_b))
print(list(set_c))
print(list(dict_d))
['a', 'b', 'c', 'd']
['a1', 'b1', 'c1', 'd1']
['a1', 'b2', 'c3', 'd4']
['a', 'b', 'c', 'd']
print(tuple(list_a))
print(tuple(tuple_b))
print(tuple(set_c))
print(tuple(dict_d))
('a', 'b', 'c', 'd')
('a1', 'b1', 'c1', 'd1')
('a1', 'b2', 'c3', 'd4')
('a', 'b', 'c', 'd')
print(set(list_a))
print(set(tuple_b))
print(set(set_c))
print(set(dict_d))
{'b', 'a', 'd', 'c'}
{'a1', 'b1', 'c1', 'd1'}
{'a1', 'b2', 'c3', 'd4'}
{'b', 'a', 'd', 'c'}
print(dict.fromkeys(list_a))
print(dict.fromkeys(tuple_b, 20))
print(dict.fromkeys(set_c, '广州'))
print(dict_d)
{'a': None, 'b': None, 'c': None, 'd': None}
{'a1': 20, 'b1': 20, 'c1': 20, 'd1': 20}
{'a1': '广州', 'b2': '广州', 'c3': '广州', 'd4': '广州'}
{'a': '11', 'b': '12', 'c': '13', 'd': '14'}