列表
列表有什么用呢,比如说你要存储一个班级所有人的名字,不可能用一个变量去存吧,要想取出其中一个名字,哪不是麻烦了,为了解决这个问题列表来了------列表可以将几乎所有类型的元素都往里面怼,通过列表可以对数据实现最方便的存储、可以进行增、删、改、查操作。
#创建一个列表
list_1 = ['a','b','c',1,2,3]
#查
print(list_1[0]) # [0]这个代表是一个下标为0,要想取出列表里的元素要用下标来取,什么是下标--就是从0开始左到右
print(list_1[0:2]) # 取出来的值是从[0]开始到[2]----注意了:取左不取右到[2]只能取到[1]的值--这个也叫切片
print(list_1[-3:-1]) #这个倒过来从后面开始往回切---注意了:取左不取右 3 是取不到的
print(list_1[-3:]) #这样就有 3 了
print(list_1[1:6:2]) #这个 2 就是每隔开一个切一刀
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
print(list_1.index('b')) #.index 返回相对应元素的下标
print(list_1.count('c')) #.count 查看列表中有多少个 c
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
list_2 = ['a','b','1','2']
list_2.sort() # .sort sort函数用ASCII码将列表进行排序----有数字和字符串一起时不支持
print(list_2)
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
list_1.reverse() # .reverse 反转列表中的元素
print(list_1)
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
#增
list_1.append(4) # .append增加元素--只能在列表的最后增加
list_1.insert(1,'20') # .insert可以选择下标插入数据--- 1,‘20’ 1代表下标,20代表要插入的元素
list_1.extend(list_2) # .extend把两个列表进行合并
print(list_1)
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
#改
list_1[1] = 10 #把下标为1的值改为 10
print(list_1)
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
#删
list_1.remove('a') #删除列表中的元素 a
del list_1[1] #删除和下标 1 对应的元素
list_1.pop() #在没有输入下标的情况下只会删除最后一个元素
list_1.clear() #清空列表
print(list_1)
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
# .copy() 浅copy
list_01 = ['a','b',[1,2,3],'c','d']
list_02 = list_01.copy() #.copy 只把第一层copy,这个叫浅copy
a1 = list_01[:] #同样是个浅copy
a2 = list(list_1) #同样是个浅copy
list_01[0] = 'A'
list_01[2][1] = 5 #.copy 当列表为一个嵌套列表时,修改的list_01,list_02也会被修改
print(list_01)
print(list_02)
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
#深copy -- 可以完全独立
import copy
list_10 = ['a','b',[1,2,3],'c','d']
list_11 = copy.deepcopy(list_10)
list_11[2][2] = 5 #修改列表中的列表
print(list_11)
print(list_10)
#输出的结果
a
['a', 'b']
[1, 2]
[1, 2, 3]
['b', 1, 3]
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1
1
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
['1', '2', 'a', 'b']
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[3, 2, 1, 'c', 'b', 'a']
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[3, '20', 2, 1, 'c', 'b', 'a', 4, '1', '2', 'a', 'b']
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[3, 10, 2, 1, 'c', 'b', 'a', 4, '1', '2', 'a', 'b']
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[]
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
['A', 'b', [1, 5, 3], 'c', 'd']
['a', 'b', [1, 5, 3], 'c', 'd']
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
['a', 'b', [1, 2, 5], 'c', 'd']
['a', 'b', [1, 2, 3], 'c', 'd']
元组
元组也是一种数据容器,使用小括号”()“表示,其使用场景与列表相似,这意味着能使用列表的地方,基本上都能使用元组,包括列表推导式,切片等操作,元组与列表的唯一区别是元组不可变
t = ("hello",66,-20,33,3.66,[10,20,30])
print(t[1:4]) #切片
print(t.count(66))
print(t.index(66))
"""
元组的拼接
"""
t1 = ("hello","world","python")
t2 = ([1,2],[3,4],[5,6,7,8])
print(t1+t2) #('hello', 'world', 'python', [1, 2], [3, 4], [5, 6, 7, 8])
"""
元组方法
len() max() min()
"""
a = (1,2,3,4)
print(max(a)) #看最大值
print(min(a)) #看最小值
print(len(a)) #看最大长度
#结果
(66, -20, 33)
1
1
('hello', 'world', 'python', [1, 2], [3, 4], [5, 6, 7, 8])
4
1
4
字典
字典一种key - value 的数据类型,key必须是唯一的,key天生去重,key可以是任意不可变类型(元组/字符串/数字)---key为键,value为值,字典是无序的----因为字典是没有下标的,要用key来找对应的值
a = {
"姓名":"李刚",
"年龄":18,
(1,2,2):"123"
}
#增
a['age'] = 18 #在没有 age 的情况下是增加一个 键值对
#改
a["年龄"] = 22 #修改 值
#删
del a['姓名'] #删除
a.pop((1,2,2)) #删除
#a.clear() #{} 清空字典
#查
print(a.get("ae")) #.get 查看对应的值,当当key不存在时,返回 None
print(a["age"]) #查看 age 的值,当key不存在时会报错
print(a)
#结果
None
18
{'年龄': 22, 'age': 18}
.fromkeys函数 .keys函数 .values函数 .items函数 .popitem函数 .update函数 .setdefault函数
inif = dict.fromkeys([1,2,3],[1,{'name':'dig'},100]) #.fromkeys 第一个列表为不同的键,第二个列表为所有键共同的值
print(inif)
d = {"名字":"李刚","年龄":18}
r = d.items() # .items 函数将以列表的形式返回字典中的所有键值对
print(r)
print(d.keys()) # .keys 以列表的形式返回字典中的所有键
r1 = d.values() # .values 函数 将以列表的形式返回字典中的所有值
print(r1)
r2 = d.popitem() # .popitem 函数用于删除字典中的最后一项,并以元组形式返回该项的key和value
print(r2)
d.setdefault("技能","上山") #若在字典中该键已经存在,则忽略,若不存在,则添加该键和值
print(d)
D1 = {"名字":"李刚"}
D2 = {"名字":"刘齐"}
D1.update(D2) # .update 用于将两个字典合并,若有两个相同的 key 则以要更新的为准 D1
print(D1)
#结果
{1: [1, {'name': 'dig'}, 100], 2: [1, {'name': 'dig'}, 100], 3: [1, {'name': 'dig'}, 100]}
dict_items([('名字', '李刚'), ('年龄', 18)])
dict_keys(['名字', '年龄'])
dict_values(['李刚', 18])
('年龄', 18)
{'名字': '李刚', '技能': '上山'}
{'名字': '刘齐'}
集合
集合是一个无序的,不重复的数据组合,它的主要作用如下:
去重,把一个列表变成集合,就自动去重了
关系测试,测试两组数据之前的交集、差集、并集等关系
list_1 = [1,4,5,7,3,6,7,8,1]
list_1 = set(list_1) #set() #创建一个集合
list_2 = set([2,4,6,0,66,88,22])
print(list_1,list_2)
#交集
print(list_1.intersection(list_2)) #取出相同的为交集
#并集
print(list_1.union(list_2)) #合并去重
#差集----我有的你没有
print(list_1.difference(list_2)) #差集 两个对比 输出list_1有, list_2没有的
#子集
list_3 =set([1,4,5])
print(list_3.issubset(list_1)) #list_3是否包含list_1 是返回True 否则返回False
#父集
print(list_1.issuperset(list_3)) #1中是否包含了3 是返回True 否则返回False
#对称差集
print(list_1.symmetric_difference(list_2)) #把重复的去掉,把相互没有的取出来放一起
print(list_1.isdisjoint(list_2)) #如果两个集合没有相同的,则返回 True 否则返回False
#另一种用符号来表示
print(list_1 & list_2) #交集 &
print(list_1 | list_2) #并集 |
print(list_1 - list_2) #差集 -
print(list_1 ^ list_2) #对称差集 ^
#增
list_1.add(99) #只能增加一个
list_1.update([55,77,33]) #增加多个
print(list_1)
#删
list_1.remove(33) #删
list_1.discard(888) # 删 如果这里没有 不会报错
print(list_1)
#结果
{1, 3, 4, 5, 6, 7, 8} {0, 2, 66, 4, 6, 22, 88}
{4, 6}
{0, 1, 2, 3, 4, 5, 6, 7, 8, 66, 22, 88}
{1, 3, 5, 7, 8}
True
True
{0, 1, 2, 66, 3, 5, 7, 8, 22, 88}
False
#另一种用符号来表示
{4, 6}
{0, 1, 2, 3, 4, 5, 6, 7, 8, 66, 22, 88}
{1, 3, 5, 7, 8}
{0, 1, 2, 66, 3, 5, 7, 8, 22, 88}
#增删
{1, 33, 3, 4, 5, 6, 7, 8, 99, 77, 55}
{1, 3, 4, 5, 6, 7, 8, 99, 77, 55}