列表方法(补)
1.修改列表元素
- 通过下标获取元素,然后重新赋值:列表名[下标] = 新元素值
- 注意:下标不能越界
names = ['张家辉', '古天乐', '陈小春', '周星驰', '小翟总'] # 定义一个列表
names[-1] = '刘德华' # 修改最后一个元素值
print(names)
2.列表的其他操作
- len(列表): 获取列表的长度(元素个数)
- 列表1+列表2:列表1和列表2组合成一个新的列表
- 列表*整数:重复列表几次
print(len([1, 2, 3, 5, 5, 7, 8, 9]))
- in /not in 操作
- 元素 in 列表:判断指定的元素是否在指定的列表中
result = '苏见信' in names # 判断names列表中有没有'苏见信'
print(result)
3.获取列表中的最大元素和最小元素
- max(列表)
- min(列表)
lis1 = [1, 2, 4, 5, 6, 8, 0, 9]
lis2 = ['a', 'f', 'g', 'h', 'e', 't', 'y', 'u', 'f']
print(max(lis1))
print(min(lis2))
练习1:获取列表中最大值
numbers = [1, 23, 5, 7, 46536, 87, 23, 4, 53, 1]
maxn = numbers[0] # 使最小值等于列表第一个值
for i in numbers:
if maxn < i: # 如果有比这个值更大的值
maxn = i # 将这个值赋值到最大值变量
print(maxn)
4.其他方法
# count:获取指定元素在列表中出现的次数
print(numbers.count(1))
# 列表.extend(序列):将序列的每一个元素,添加到列表中
names.extend('SHIN')
print(names)
names.extend(['Shin'])
print(names)
# 列表.index():获取指定元素在指定列表中的索引(如果有多个,取第一个)
print(numbers.index(1))
# 列表.reverse() 反向列表中的元素0 直接操作原列表 不会产生新的列表
nums = [1, 2, 3, 4]
nums.reverse()
print(nums)
# 列表.sort():对列表元素进行排序
nums = [4, 5, 45, 23, 3126, 8, 2, 54, 4, 0, 3, 236, 2]
nums.sort() # 升序
print(nums)
nums.sort(reverse=True) # 降序
print(nums)
# 列表.clear():清空列表中的元素
nums.clear()
# nums = [] 效果同上
print(nums)
# 列表.copy():复制列表全部元素到新列表中
names = ['z3', 'l4']
# nNames = names.copy()
nNames = names[:]
print(nNames)
注意:通过一个列表变量给另一个列表赋值的时候,赋的是地址,两个列表对元素的操作会互相影响
可以使用copy和切片来避免
元组
1. 什么是元组
- 元组就是不可变的列表,列表中除了可变的操作,其他操作都适用于元组
- 元组值:使用()将元素包含起来,多个元素之间用逗号隔开(1,1,'132')
- 元素的类型可以是任何类型
- 改,删,增相关操作都不行,只能查找
a.查(与列表相同)
colors = ('red', 'yellow', 'white', 'black', 'blue')
print(colors[1])
print(colors[0:2])
print(colors[0::2])
for i in colors: # 遍历列表所有元素
print(i)
b.len() # 计算列表元素个数
print(len(colors))
c.in/not in # 判断元素是否存在
print('red' in colors)
d.+和* # 符号操作
print((1, 2) + (3, 4))
print((1, 2) * 3)
e.元组补充(列表也可以用)
获取元组元素
names = ('name1', 'name2', 'z')
x, y, z = names # 变量个数和元组个数必须一样
print(x, y)
fst, *middel, lat = colors # 变量前加*可以把变量变成列表,获取多个元素
print(fst, middel, lat)
*cl, color = colors
print(cl, color)
color, *cl = colors # color获取第一个元素,剩下作为cl的列表
print(cl, color)
字典
- 字典也是一种容器类型的数据类型(序列),存的数据是以键值对的形式出现,字典中的元素全部都是键值对
- 字典是可变的,但是是无序的(不能使用下标)
- 键必须是唯一的
- 键值对: 键:值(key:value):键值对中key是形式,值才是要保存的内容
- 键:理论上是任何不可变的数据类型,实际开发的时候一般使用str作为key
- 值: 可以试任意数据类型
1.声明一个字典
a.创建一个字典变量
dict1 = {} # 创建一个空字典
print(type(dict1))
dict2 = {'a': 1, 'b': 'abc', 10: [1, 2, 3], ('a', 'b'): 'abc'}
print(dict2)
b.其他数据类型转换为字典
dict3 = dict([(1, 2), (2, 3)]) # 了解
print(dict3)
2.字典的增删改查
a.查 获取字典的键的值
字典获取元素的值是通过key
字典名[key]
如果key不存在,会报KeyError
person = {'name': 'Jordan', 'height': '198', 'weight': 98}
print(person['height'])
# 字典.get(key)
print(person.get('name'))
print(person.get('asdasd')) # 如果Key不存在返回None
注意:如果key值确定存在,使用[]获取值,不确定key值是否存在才使用get方法
b.增加/修改元素
a.通过key获取字典元素,然后赋值/修改,key不存在时,添加键值对,key存在时,修改元素值
person['speed'] = 95 # 没有该key,则增加一对键值对
print(person)
person['weight'] = 103 # weight key存在,则修改weight的值
print(person)
b.删除
注意:key值不存在会报KeyError
# del dict[key] 删除键值对
del person['weight']
print(person)
# 字典.pop(key) 取出一个值 会返回被弹出键值对的值
speed = person.pop('speed')
print(person, speed)
3.相关的数组属性
字典.keys():获取字典所有的key,返回值的类型是dict_keys,但是可以把它当成列表来使用
字典.values():获取字典所有的value
字典.items():获取所有的键值对作为元组
student_dict = {
'name': 'zhang3',
'sId': 'py123456',
'scores': {
'eng': 98,
'math': 50
}
}
keys = student_dict.keys()
print(keys)
# 遍历获取所有key
for key in keys:
print(key)
print(student_dict.values())
print(student_dict.items())
4.遍历字典
# a.直接遍历字典获取到是所有的key(推荐)
for key in student_dict:
print(key, student_dict[key])
# b.
for key, value in student_dict.items():
print(key, value)
5.列表中有字典.字典中有字典,字典中有列表
- 声明一个变量,作用是用来存储一个班级所有学生的信息,信息包括姓名,年龄,性别,电话
至少村三个学生
allStus = {} # 声明一个空字典
stu1 = {'name': '1', 'age': 10, 'gender': 'male', 'tel': '123123123'}
stu2 = {'name': '2', 'age': 10, 'gender': 'male', 'tel': '123123123'}
stu3 = {'name': '3', 'age': 10, 'gender': 'male', 'tel': '123123123'}
allStus = [stu1, stu2, stu3]
6.其他操作
1.fromkeys()
dict.fromkeys(seq,value):创建一个新的字典,序列中的元素依次作为key,value作为值
list1 = ['name', 'age']
dict1 = {}
dict1 = dict1.fromkeys(list1, 123)
print(dict1)
2.in
key in dict:判断字典中是否存在制定的key
dogs = {'color': '1', 'age': 1}
print('color' in dogs)
3.update
dict1.update(dict2):使用dict2中的元素去更新dict1中的键值对.如果dict2中对应的键值对不存在,则添加,存在则更新值
dict1 = {'q': 1}
dict2 = {'q': 2, 'w': 4}
dict1.update(dict2)
print(dict1)
集合
- 集合也是一种容器类型的数据类型(序列);数据放在{}中,多个之间用逗号隔开:{1,2,'a'}
- 特性:无序的(不能通过索引取值),可变的(可以增删改),元素不能重复
- 可以进行数学集合操作: 判断是否包含,求交,并,补,差
1.声明集合
# a.声明一个变量,赋一个集合值
set1 = {1, 2, 3}
set2 = set() # 空集合
print(set1, type(set1))
# b.将其他的数据类型转换为集合
set2 = set('123asd123') # 将其他数据转换为集合自动去重 顺序会变
print(set2)
2.增删改查
注意:集合无法获取某个单独的元素
# a.查:遍历
for i in set2:
print(i)
# b.增
# 集合.add(元素):在指定的集合中添加指定元素
set1 = {1, 2, 3}
set1.add(100)
print(set1)
# 集合1.update(集合2):将集合2中的元素添加到集合1中,去重
set1.update(set2)
print(set1)
# c.删
# 集合.remove(元素):在集合中删除指定元素
set1.remove('s')
print(set1)
# pop()随机删除一个
set1.pop()
print(set1)
注意:改不了
3.判断是否包含
set1 >= set2 判断集合1中是否包含集合2
set1 <= set2 判断集合2中是否包含集合1
print({1, 2, 3} >= {1, 2}) # True
print({1, 2, 3} >= {1, 4}) # False
print({1, 2, 3} <= {1, 2}) # False
4.数学的集合运算
# 求并集:|
print({1, 2, 3} | {2, 3, 4}) # {1, 2, 3, 4}
# 求交集:&
print({1, 2, 3} & {2, 3, 4}) # {2, 3}
# 求差集:-
print({1, 2, 3} - {2, 3, 4}) # {1}
# 求补集:^
print({1, 2, 3} ^ {2, 3, 4}) # {1, 4}
5.其他相关方法
# clear():清空集合
set1.clear() # 等同于 set1 = set()
print(set1)
# len():获取集合元素个数
print(len(set2))