首页 > Python基础教程 >
-
python02-字符编码、字符串格式化、进制转化、数据类型、列表、元组、字典总结(2)
3.改 修改:
想要修改首先得用切片把相应的值取出来,在进行赋值即可。
代码示例:
list = ["one","two",3,4,"five"]
list[1] = 2 #将索引值为1的对象取出来,再重新赋值
print(list)
输出结果:
['one', 2, 3, 4, 'five']
需求:将list = ["one","two",3,4,"five"]这个列表里的two 和 4 修改成 2 和 four
代码示例:
list = ["one","two",3,4,"five"]
list[1:4:2] = [2,"four"]
print(list)
输出结果:
['one', 2, 3, 'four', 'five']
注意:在list[1:4:2] = [2,"four"]中,因为list[1:4:2]输出得是一个列表,所以等号右边也必须是个列表
4.删 删除:
4.1:remove
remove只能删除一个,并且()里填写的是对象内容
代码示例:
list = ["one","two",3,4,"five"]
list.remove("two") #删除two
print(list)
输出结果:
['one', 3, 4, 'five']
4.2 :pop
pop删除的时候()里是填写索引值,并且还可以将删除数据返回出来,如果括号里面不填索引值,即pop(),则默认删除最后一个值。
代码示例:
list = ["one","two",3,4,"five"]
a = list.pop(1) #删除 two
print(list,a)
输出结果:
['one', 3, 4, 'five'] two
4.3 :del什么都可以删除
代码示例:
list = ["one","two",3,4,"five"]
del list[0] #删除 one
print(list)
输出结果:
['two', 3, 4, 'five']
5.列表的其他操作
5.1 :count:计算某元素出现次数
代码示例:
list = ["one","two",3,4,"five"]
v = list.count("two") #计算two出现的次数
print(v)
输出结果:
1
5.2:extend:用于在列表末尾一次性追加另一个序列中的多个值,括号中必须是可迭代对象,可以理解为批量的append()
代码示例:
a = [1,2,3]
b = [4,5,6]
a.extend(b) #把b加到a里面
print(a)
print(b)
输出结果:
[1, 2, 3, 4, 5, 6]
[4, 5, 6]
5.3:index根据内容找位置,输出得是第一个匹配内容的索引位置
代码示例:
list = ["one","two",3,4,"five"]
T = list.index("five") #查找five的索引值
print(T)
输出结果:
4
5.4 合集
1.reverse:用于反向列表中元素
2.sort:对原列表进行排序
reverse -- 排序规则,reverse = True 降序(由大到小), reverse = False 升序(由小到大)(默认)
3.in:查一个数据在不在列表内
4.type:身份判断:判断一个对象是不是列表
代码示例:
list0 = ["one","two",str(3),str(4),"five"]
list0.reverse() #反向列表中元素
print(list0)
list0.sort(reverse=True) #由大到小de对原列表进行排序
print(list0)
a = "six" in list0 #判单six在不在列表里
print(a)
b = type(list0) is list #判断list0是不是列表
print(b)
输出结果:
['five', '4', '3', 'two', 'one']
['two', 'one', 'five', '4', '3']
False
True
6.列表练习题:
list = ["one","two",3,4,"five","天才"]
把list列表中的天才的 天 改成 蠢
代码示例:
list = ["one","two",3,4,"five","天才"]
v = list[5].replace("天","蠢")
list[5] = v
print(list)
输出结果:
['one', 'two', 3, 4, 'five', '蠢才']
注意:字符串不能通过索引值修改,只能通过索引值取出来。(⬇)
7.补充:
需求:索引为奇数值,删除
注意:删除列表元素时,会影响列表长度,从而使得索引取值时,容易出现错误。
li = [11,22,33,44,66]
# 解决方案一:
li = [11, 22, 33, 44, 66] # 0
new_list = []
for i in range(0,len(li)):
if i%2 == 0:
new_list.append(li[i])
li = new_list
print(li)
# 解决方案二:
li = [11, 22, 33, 44, 66] # 0
for i in range(len(li)-1,-1,-1): # 4,0
if i%2 == 1:
del li[i]
print(li)
#解决方案三:切片+步长
li = [11, 22, 33, 44, 66]
del li[0:4:2]
print(li)
七.元组
Python 的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
1. 创建空元组
tup1 = ()
2. 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:
代码示例:
tup1 = (50)
print(type(tup1)) # 不加逗号,类型为整型
tup1 = (50,)
print(type(tup1)) # 加上逗号,类型为元组
输出结果:
<class 'int'>
<class 'tuple'>
3. 元组可以使用下标索引来访问元组中的值
4. 可以对元组进行连接组合
5.元组可以计算长度len()
6.元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组
7.重点:
元组的儿子不能修改,但是孙子可以,元组的元素不能修改,但是元组的元素的元素是可以修改的。
代码示例:
tuple1 = ("one","two","three",[1,2,"zrh"],(1,2,3),"four")
tuple1[3][1] = 3
print(tuple1)
tuple1[3].append("q")
print(tuple1)
输出结果:
('one', 'two', 'three', [1, 3, 'zrh'], (1, 2, 3), 'four')
('one', 'two', 'three', [1, 3, 'zrh', 'q'], (1, 2, 3), 'four')
八.字典
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对,用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变类型。
不可变类型:整型、字符串、元组
可变类型:字典、列表
格式:变量名 = {键:值,键:值}
代码示例:
dict1 = {
"name":"zrh",
"age":20,
"height":75
}
1.:dict.get
1.1通过键取值
代码示例:
dict1 = {
"name":"zrh",
"age":20,
"height":75
}
print(dict1.get("name"))
输出结果:
zrh
1.2()参数,如果键不存在,就用后面的结果当作默认值。
代码示例:
dict1 = {
"name":"zrh",
"age":20,
"height":75
}
print(dict1.get("key",999))
输出结果:
999
2.:dict.keys() 、 dict.values() and dict.items()
经常和for循环一起使用
字典在for循环的时候尽量不要用两个变量去分别接收 键 和 值,这样会造成内存负荷过大,可以先遍历键,然后通过键去找值
代码示例:
dict1 = {
"name":"zrh",
"age":20,
"height":75
}
a = dict1.keys() #查看所有键
print(type(a)) #查看a的类型
print(a)
print(dict1.values()) #查看所有值
print(dict1.items()) #查看所有键值对
输出结果:
<class 'dict_keys'>
dict_keys(['name', 'age', 'height'])
dict_values(['zrh', 20, 75])
dict_items([('name', 'zrh'), ('age', 20), ('height', 75)])
for循环注意事项:
1 dict1 = {}
2 for key in dict1:
3 pass
4 for key in dict1.items():
5 pass
6 for key in dict1.keys():
7 pass
8 for key in dict1.values():
9 pass
注意dict1后面括号的有无
3.增加键值对
代码示例:
dict1 = {
"name":"zrh",
"age":20,
"height":75
}
dict1["hobby"] = "eat"
print(dict1)
输出结果:
{'name': 'zrh', 'age': 20, 'height': 75, 'hobby': 'eat'}
如果增加的键已经存在,那就是改的功能。
4.删除
代码示例:
dict1 = {
"name":"zrh",
"age":20,
"height":75
}
del dict1["name"] #删除指定键值对
print(dict1)
dict1.clear()
print(dict1) #清空字典中所有键值对,但空字典还存在
dict2 = {
"name":"zrh",
"age":20,
"height":75
}
a = dict2.pop("name") #通过键去删除,并可以返回相应的值
print(a)
print(dict2)
b = dict2.popitem()
print(b)
print(dict2) #随机删除一对键值对,并且返回相相应键值对
输出结果:
{'age': 20, 'height': 75}
{}
zrh
{'age': 20, 'height': 75}
('height', 75)
{'age': 20}
5.嵌套
字典里面可嵌套字典或者列表都可以,列表页都可以嵌套字典。
在修改时,遇到字典用键,遇到列表用索引值,然后查找出来之后赋值即可,其他操作一样,反正一句话:
遇到字典用键,遇到列表用索引值。
6.update()用于将括号中的键值对添加到目标对象中,如果括号中的键在目标对象中存在,则更新目标对象的值
1 dict1 = {
2 'k1':'v1',
3 'k2':'v2',
4 'k3':'v3'
5 }
6 dict1.update({'k4':'v4','k1':'v11'})
7 print(dict1)
8 #输出结果:{'k1': 'v11', 'k2': 'v2', 'k3': 'v3', 'k4': 'v4'}
7.fromkeys()创建字典
1 #fromkeys使用的时候不是文件名. 是用dict.来调用
2 val = dict.fromkeys(['k1','k2','k3'],666) #将666作为值赋给K1 K2 K3三个键
3 print(val) #输出结果{'k1': 666, 'k2': 666, 'k3': 666}
4 val['k1'] = 999 #给数字重新赋值,在内存中重新开辟一块内存用来储存999,然后k1指向999,原来的k2 k3值不变
5 print(val) #输出结果{'k1': 999, 'k2': 666, 'k3': 666}
6
7 val = dict.fromkeys(['k1','k2','k3'],[])
8 val['k1'].append(666)
9 val['k2'].append(999)
10 #k1 k2 k3指向的是同一个值,即[],每次往里加内容的时候 k1 k2 k3 的值都会发生变化
11 print(val) #输出结果{'k1': [666, 999], 'k2': [666, 999], 'k3': [666, 999]}
12
13 val = dict.fromkeys(['k1','k2','k3'],[])
14 val['k1'].append(666)
15 val['k1'] = [1,2,3] #这里是重新赋值操作,在内存中重新开辟一块空间储存[1,2,3],k1指向他,k2 k3值不变
16 print(val) #输出结果{'k1': [1, 2, 3], 'k2': [666], 'k3': [666]}
8.补充
# 题:dic = {'k1':"v1",'k2':'v2'}把key="k1",键值对删除
del dic['k1']
# 题:dic = {'u1':"v1",'k2':'v2','k3':'v3'}把key中存在k,键值对删除
dic = {'u1':"v1",'k2':'v2','k3