Python基本数据类型及其常用操作 - 可变数据类型(List列表,Set集合,Dict字典)

接上篇不可变的数据类型,这篇文章主要讲解可变的数据类型。

列表

定义

列表是由中括号来定义元素的,中括号里的元素可以是不同类型的,也可以是列表,这种叫嵌套。如果中括号内没有任何元素,这就定义了一个空的列表。

list1 = []
list2 = ['a','hello',1,('python',),True,["QianTao",'list']]
print(list2,type(list2))  # ['a', 'hello', 1, ('python',), True, ['QianTao', 'list']] <class 'list'>

特点

有序,可变

常用方法

增 append(obj)、 extend(list) 、 insert(index,obj)
list2 = ['a','hello',1,('python',),True,["QianTao",'list']]
list3 = ['a','b',2022,(1,2,'a'),['list3'],'a']
list3.append('hello world')
print("追加元素 :",list3)
list3.extend(list2)
print("追加列表:",list3)
list3.insert(3,"this is insert content")
print("指定下标插入元素:",list3)

运行结果:
在这里插入图片描述

删 remove(obj)、 del(list/obj) 、 pop(obj_index)

对于del 来说,是删除整个变量,并不是删除列表的元素,使他变为空的列表,使用del删除

list3.remove('a')
print("移除元素'a' :",list3)
list3.pop()
print("pop默认删除最后一个元素:",list3)
list3.pop(-2)
print("删除倒数第二个元素 :",list3)
# del list3
# print(list3)
list4 = [1,2,3,4,6,5,8,9,7,2,10]
list4.clear()
print("list.clear:",list4)

运行结果:
在这里插入图片描述

改 list[index] = value
list3[1] = 'hahahahahaha'
print("在下标为1的位置加入元素 :",list3)

运行结果:
在这里插入图片描述

查 list[index]、list[start_index:end_index:steps]、list.index(obj)
print(list3[0])
print("从头查到尾 :",list3[0::])
print("从尾查到头 :",list3[-1::-1])
print("从下标3开始查找,间隔为2 :",list3[3::2])
print("元素'a'的下标 :",list3.index('a'))

运行结果:
在这里插入图片描述

其他方法 len(list)、list+list 、list*n 、max(list)、min(list)、count(obj)、list.reverse()、list.sort()、list.clear()、list.copy()
print("len(list):",list3)
print("list2+list3:",list2+list3)
print("list*n :",list2 * 3)
list4 = [1,2,3,4,6,5,8,9,7,2,10]
print("max(list):",max(list4))
print("min(list):",min(list4))
print("count(obj):",list4.count('a'))
list4.reverse()
print("list.reverse:",list4)
list4.sort()
print("list.sort:",list4)
list4_copy = list4.copy()
print("list.copy:",list4_copy)

运行结果:
在这里插入图片描述

类型转换

int类型的元素不能转化为列表,会报错:

'int' object is not iterable
str1 = 'hello python'
tuple1 = (1,2,4,'a')
print(list(tuple1))
print(list(str1))

运行结果:
在这里插入图片描述

字典

定义

字典是由多个键值对key:value组成的,每个键值对用逗号隔开,所有键值对放在大括号内{ },如果{ }内没有元素,这就定义了一个空的字典。由于key值不可变,所有key的定义只能用不可变的数据类型去定义,例如:字符串,数字,元组。

empty_dict = {}
dict1 = {'key1_str':'value1',123:'value2',('key3_tuple',):123,'key4_str':[11,22,33],'last kay':'last value'}
dict2 = {'dict2_key1':'dict2_value1','dict2_key2':'dict2_value2','dict2_key3':'dict2_value3'}

特点

无序,键不可变而且唯一,值可变,如果一个key出现两次,那么value的值会以第二次出现的key的值显示。

dict2 = {'1':1,'2':2,'3':3,'1':'hahahhahaha'}
print(dict2) # {'1': 'hahahhahaha', '2': 2, '3': 3}

常用方法

增 dict[key] = value、dict1.update(dict2)
# 通过为新key赋值来为字典增加元素
dict1['add'] = 'added value'
print("增加一个元素之后的dict1:",dict1)
# 通过追加另一个字典来为字典增加元素
dict1.update(dict2)
print("追加dict2之后的dict1:",dict1)

运行结果:
在这里插入图片描述

删 del dict、del dict[key]、dict.pop(key)、dict.popitem()、dict.clear()
# 删除指定元素 del dict1[key]
del dict1['key4_str']
print("删除key4_str:",dict1)
# 删除指定元素 pop(key) 
print("删除'key1_str'",dict1.pop('key1_str'))
# popitem 删除末尾键值对
print("删除末尾键值对",dict1.popitem())
# 清空字典内的元素
dict1.clear()
print("清空字典:",dict1)
# 删除字典 del dict1

运行结果:
在这里插入图片描述

改 dict[key] = new value
dict1 = {'key1_str':'value1',123:'value2',('key3_tuple',):123,'key4_str':[11,22,33]}
dict2 = {'dict2_key1':'dict2_value1','dict2_key2':'dict2_value2','dict2_key3':'dict2_value3'}
dict1['key4_str'] = 'updated value'
print("修改key4_str的值:",dict1)

运行结果:
在这里插入图片描述

查 dict[key]、dict.get[key]、dict.keys()、dict.values()、dict.items()
# 查
dict1 = {'key1_str':'value1',123:'value2',('key3_tuple',):123,'key4_str':[11,22,33]}
print("dict1['key4_str']:",dict1['key4_str'])
print("dict1.get('key4_str'):",dict1.get('key4_str'))
print("dict1.keys():",dict1.keys())
print("dict1.values():",dict1.values())
print("dict1.items():",dict1.items())

运行结果:
在这里插入图片描述

其他方法 len(dict)、dict.copy()、dict.fromkeys()

dict1 = {'key1_str':'value1',123:'value2',('key3_tuple',):123,'key4_str':[11,22,33]}
print("字典长度",len(dict1))
dict3 = dict1.copy()
print("复制字典",dict3)
print("fromkeys:")
sequence = ('1','2','3')
dict4 = dict.fromkeys(sequence)
print("dict4:",dict4)
dict5 = dict.fromkeys(sequence,'hahahaha')
print("dict5:",dict5)

运行结果:
在这里插入图片描述

类型转换

dict1 = {'key1_str':'value1',123:'value2',('key3_tuple',):123,'key4_str':[11,22,33]}
s = str(dict1)
print("将字典转化为字符串:",s,type(s))

运行结果:
在这里插入图片描述

集合

定义

集合是使用大括号{ }进行定义的,每个元素用逗号隔开,定义空的集合用set(),因为{}是用来定义空字典的。

s = set() # 定义一个空的集合
s1 = {1,2,3,'hello',('hahha',1),True,1,2,3} # 元素是不可变的数据类型,list,dict不能作为元素的数据类型
s2 = set('hello') # 只能有一个元素
s3 = set([1,2,3])
s4 = set((55,))
print("集合里的元素不能重复:",s1)
print("set(value)定义: ",s2,s3,s4)

在这里插入图片描述

特点

无序,可变,但值不可重复

常用方法

增 s.add(ele)、s.update(ele)
s1.add('add')
s1.update('update1',['list'],{'update3':'hahahahahaha'})
print("增加元素之后的s1:",s1)

运行结果:
在这里插入图片描述

删 s.remove(ele)、s.discard(ele)、s.pop()、s.clear()
# 删除集合的指定元素 - 元素不存在会报错
s1.remove("add")
# 删除集合的指定元素 - 元素不存在不会报错
s1.discard('add')
# 随机删除元素
s1.pop()
# 清空集合内的元素
s1.clear()
# 删除集合 del s1
print("删除元素之后的集合:",s1)

运行结果:
在这里插入图片描述

查 ele in set
s1 = {1,2,3,'hello',('hahha',1),True,1,2,3}
print("元素是否存在:",'hello' in s1)  # True

其他方法

print("统计集合内的元素个数:",len(s1))
s5 = s1.copy()
print("拷贝一份集合",s5)

运行结果:
在这里插入图片描述

集合操作

s1 = {'a','b','c','d','e','f',1,2,3,4,5,6}
s2 = {'a','b','c','x','y','z',1,2,3,7,8,9}

print("--- s1有但是S2没有的元素 ---")
print("s1 - s2:",s1 - s2)
print("s1.difference(s2):",s1.difference(s2))

print("~~~ s1和S2的所有元素(重复的元素只会出现一次) ~~~")
print("s1 | s2:",s1 | s2)
print("s1.union(s2):",s1.union(s2))

print("*** s1和S2共有的元素 ***")
print("s1 & s2:",s1 & s2)
print("s1.intersection(s2):",s1.intersection(s2))

print("### s1和S2彼此不相同的元素 ###")
print("s1 ^ s2:",s1 ^ s2)
print("s1.symmetric_difference(s2):",s1.symmetric_difference(s2))

运行结果:
在这里插入图片描述

print("... 其他集合操作 ...")
s1.difference_update(s2)
print("从s1中移除和s2相同的元素",s1)
s1.intersection_update(s2)
print("从s1中移除和s2不相同的元素",s1)
s1 = {'a','b','c','d','e','f',1,2,3,4,5,6}
s2 = {'a','b','c','x','y','z',1,2,3,7,8,9}
res1 = s1.isdisjoint(s2)   # 存在就是false,不存在就是true
print("s2中是否 不存在 s1的元素",res1)
res2 = s1.issubset(s2)
print("s1是否为s2的子集",res2)
s3 = {1,2,3}
res3 = s1.issuperset(s3)
print("s3是否为s1的子集",res3)
s1.symmetric_difference_update(s2)
print("从s1中删除和s2相同的元素,然后在s1中添加 s2中s1没有的元素",s1)

运行结果:
在这里插入图片描述

类型转换

str1 = 'hello python'
list1 = ['l','i','s','t']
s1 = {'s','e' ,'t'}
print("str -> set:",set(str1))
print("list -> set:",set(list1))
print("set -> str:",str(s1))
print("set -> list:",list(s1))

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值