Python基础之集合数据类型

Python基础之集合数据类型

    • 1 list集合
      • 1.1 访问集合中的元素
      • 1.2 编辑集合中的元素
      • 1.3 对列表进行排序
    • 2 tuple集合
      • 2.1 访问集合中的元素
    • 3 dict集合
      • 3.1 访问集合中的元素
      • 3.2 编辑集合中的元素
    • 4 set集合
      • 4.1 操作集合中的元素
      • 4.2 编辑集合中的元素
    • 5 集合相互转化
      • 5.1 集合转为list
      • 5.2 集合转为tuple
      • 5.3 集合转为set
      • 5.4 集合转为dict

数据集合类似一个装有多个对象的容器,而容器包括数组和集合,数组是固定长度的,而集合是可变长度的。在Python中,已经没有内置对数组的支持,但可以使用列表List代替。Python的数据集合主要包括四种类型:list、tuple、dict、set,下面将分别对四种集合类型进行详细讲解。

1 list集合

list的元素以英文逗号分隔,存放在一对中括号"[ ]"中。集合中元素是允许重复的,且各元素的顺序就是添加元素的顺序,能够根据索引位置快速访问集合中的元素,也可以追加、插入及删除集合中的元素。

1.1 访问集合中的元素

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

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)
['广州', '深圳', '东莞', '汕头', '湛江', '江门', '中山']
['广州', '深圳', '东莞', '汕头', '湛江', '江门']
['广州', '东莞', '汕头', '湛江', '江门']
['广州', '东莞', '湛江', '江门']
[]

1.3 对列表进行排序

citys = ['广州','深圳','珠海','汕头','佛山']

# 对列表进行排序
# 排序规则reverse,reverse = True 降序, reverse = False 升序(默认)。
citys.sort() 
print(citys) 

citys.sort(reverse = True)
print(citys) 

citys_n = citys.reverse() # reverse反转队列
print(citys)

['佛山', '广州', '汕头', '深圳', '珠海']
['珠海', '深圳', '汕头', '广州', '佛山']
['佛山', '广州', '汕头', '深圳', '珠海']

2 tuple集合

tuple的元素以英文逗号分隔,存放在一对括号"( )"中。与list的用法非常相似,都可以访问集合中的元素,但tuple初始化后元素就不可以修改,没有append、insert、remove、pop、sort等方法。换言之,tuple的不可篡改性确保了数据安全。

2.1 访问集合中的元素

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
深圳
东莞

3 dict集合

dict即字典,以键值对(key/value)方式存放,键与值间以英文冒号分隔,键值对以英文逗号分隔,存放在一对大括号"{ }"中,dict是通过哈希表方式快速查找键的映射关系。

3.1 访问集合中的元素

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(['深圳', '东莞', '佛山', '湛江'])

3.2 编辑集合中的元素

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': '湛江'}

4 set集合

set的元素以英文逗号分隔,存放在一对大括号"[ ]"中。与dict的用法类似,是存储Key的集合,没有Value。集合的数据不会重复,可以去重list数据,可以存放dict的key。

4.1 操作集合中的元素

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'}

4.2 编辑集合中的元素

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'}

5 集合相互转化

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"}

5.1 集合转为list

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']

5.2 集合转为tuple

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')

5.3 集合转为set

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'}

5.4 集合转为dict

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'}

你可能感兴趣的:(Python学习分享,python,列表,数据结构)