Python四种常用容器类型
一、字符串容器(string)
1.#for循环遍历字符串 My_str = \'hi,你好\' for v in My_str: print(v,end=\'\')
输出:
2.#replace替换函数 my_string = \'寻寻觅觅,冷冷清清,柒柒惨惨戚戚\' print(my_string) #还未替换前 print(my_string.replace(\'柒\',\'凄\',2)) #替换后重新生成一个字符串,2代表替换两次
输出结果:
字符串(string)特点:
1、字符串一旦定义不允许修改(赋值)
2、字符串容器里面的元素都是字符类型
字符串切片案例:(切片语法:左闭右开)
#-----------------------------方法一(find) email = \'chenroubao@IT.com\' #如果查找到,返回子串第一次出现的位置;找不到就返回-1 position = email.find(\'@\') if position == -1: print(\'不存在@!\') else: left = email[:position] right = email[position+1:] print(\'左边是:\',left) print(\'右边是:\',right) print(\'逆序输出:\',email[::-1])#-------逆序输出
输出结果:
#--------------方法二(split) email = \'chenroubao@IT.com\' count = email.count(\'@\') if count == 1: result = email.split(\'@\') print(\'左边是:\',result[0]) print(\'右边是:\',result[1]) else: print(\'邮箱不合法!\')
输出结果:
二、列表容器(list)
1 #插入删除函数 2 my_list = [] 3 4 #append在尾部插入元素 5 my_list.append(1) 6 my_list.append(2) 7 my_list.append(3) 8 my_list.append(4) 9 print(my_list) #[1,2,3,4] 10 #insert 在指定位置插入 11 my_list.insert(2,1) 12 print(my_list) #[1,2,1,3,4] 13 #pop 用于位置删除,默认删除最后一个元素 14 my_list.pop() 15 print(my_list) #[1,2,1,3] 16 my_list.pop(3) 17 print(my_list) #[1,2,1] 18 #remove 根据值删除,默认删除第一个出现的值 19 my_list.remove(1) 20 print(my_list) #[2,1] 21 #clear 清空 22 my_list.clear() 23 print(\'列表长度:\',len(my_list)) #列表长度:0
1 #排序函数 2 #产生10个随机数 3 import random 4 list = [] 5 i = 0 6 while i < 10: 7 random_shu = random.randint(1,10) 8 list.append(random_shu) 9 i += 1 10 print(list) 11 #sort排序 默认升序 (设置reverse=True降序) 12 list.sort() 13 print(list) 14 #reverse逆序输出 15 list.reverse() 16 print(list)

#extend扩大 用于两个list合并 list = [1,2] list2 = [3,4] list.extend(list2) print(list) #输出:[1,2,3,4]
列表(list)优缺点:
优点:
支持位置删除(尾部删除、指定位置删除)和值删除
尾部插入和删除效率更高,原因是:不需要移动元素
指定位置插入和删除效率较低,原因是:需要移动元素,元素越多,效率越低
缺点:
查找效率低(列表是序列式存储的,假如查找的元素位置在最后,那相当于把整个列表都查了一遍才找的出来,所以效率低。)
但是指定位置的查找效率是高的。
三、元祖(tuple)
#元祖的定义 tuple = ((1,),) print(tuple) #输出: ((1,))
元祖(tuple)特点:
不支持修改,只支持遍历、查找
元祖内只有一个元素时,加,(逗号)
元祖比列表更节省空间
元祖是序列式容器,支持索引、切片操作
四、字典(dict)
def test(): #字典定义 my_dict = {\'name\':\'obama\',\'age\':18,\'sex\':\'男\'} print(my_dict.get(\'name1\',\'key不存在,这里是默认值\')) #key不存在,就添加元素;存在就是修改元素 my_dict[\'score\'] = 100 print(my_dict) test()
输出结果:
1 #字典遍历 2 my_dict = {\'name\':\'obama\',\'age\':18,\'sex\':\'男\'} 3 for val in my_dict: 4 print(val) #输出键,没有值 5 key = my_dict.keys() 6 print(list(key)) #按列表输出键 7 val = my_dict.values() 8 print(list(val)) #按列表输出值 9 key_value = my_dict.items() 10 print(list(key_value)) #输出键值对 11 for keyval in key_value: 12 print(\'key:\',keyval[0],\'value:\',keyval[1])
输出结果:
1 # while循环遍历字典 2 my_dict = {\'name\':\'obama\',\'age\':18,\'sex\':\'男\'} 3 list = list(my_dict.items()) 4 i = 0 5 while i < len(list): 6 print(\'key:\',list[i][0],\'value:\',list[i][1]) 7 i += 1
输出结果:
字典(dict)特点:
字典是非序列式容器,不支持索引、切片
查找效率高,空间占用较大。以空间换时间