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)特点:

字典是非序列式容器,不支持索引、切片

查找效率高,空间占用较大。以空间换时间

原文地址:https://www.cnblogs.com/zhukaijian/p/15187992.html