一、元组
1.什么事元组(tuple)
'''
元组是容器型数据类型(序列),将()作为容器的标志里面多个元素用逗号隔开:(元素1, 元素2, 元素3,...)
元组不可变(不支持增删改);元组事有序的(支持下标操作)
元素:任何类型的数据
'''
t1 = (10, 20, 30)
print(t1, type(t1))
t2 = ()
2.元组就是不可变的列表
列表中除了和增删改相关操作以为的操作元组都支持
例如:查、相关操作、相关方法(除了增删改相关的)、相关函数
t3 = (10, 23, 78, 9)
print(t3[-1])
print(t3[1:])
for x in t3:
print(x)
for index in range(len(t3)):
print(index, t3[index])
for index, item in enumerate(t3):
print(index, item)
num = 23
t_num = type(num)
if t_num == int or t_num == float or t_num == str:
print('是数字或者字符串')
if t_num in (int, float, str):
print('是数字或者字符串')
t2 = (10, 23, 78, 9, 10)
print(t2.count(10))
print(t2.index(23))
print(max(t2), min(t2))
print(sum(t2))
print(sorted(t2))
print(tuple('abc'))
3.元组特殊或者常用的操作
1)只有一个元素的元组:(元素,)
t1 = (10,)
2)元组在没有歧义的情况下可以省略()
直接有逗号将多个数据隔开,表示的也是一个元组
t2 = 10, 2, 20, 3
print(t2, type(t2))
3)同时使用多个变量获取元组的元素(列表也支持)
a.让变量的个数与元组中元素个数保持一致
t3 = ('小明', 18, 90)
name, age, score = t3
print(name, age, score)
b.让变量的个数小于元组元素的个数,但是必须在某一个变量前加*
先让不带* 的变量按照位置获取元素,剩下的部分全部保存到带* 的变量对应的列表中
t3 = ('小明', 18, 170, 80, 90, 80, 76)
x, y, *z = t3
print(x, y, z)
x, *y, z = t3
print(x, z, y)
二、字典
student = [‘张三’, 30, ‘110’, 80]
print(student[0])
student = {
'name': '张四',
'contacts': '张三',
'age': 30,
'tel': '110',
'score': 28
}
1.认识字典(dict)
'''
1)字典是容器型数据类型(序列),将{}作为容器的标志,里面多个键值对用逗号隔开:{键1:值1, 键2:值2,...}
2)字典是可变的(支持增删改);字典是无序的(不支持下标操作)
3)元素 - 键值对
键 - 必须是不可变的数据,例如:元组、数字、字符串。键是唯一的
值(才是真正想保存的数据) - 没有要求
'''
1)空字典
dict1 = {}
print(dict1, type(dict1))
2)键是不可变的数据
dict2 = {'a': 10, 'b': 2}
dict3 = {'b': 2, (1, 2): 10}
3)键是唯一
dict4 = {'a': 12, '2': 44, 'a': 33}
print(dict4)
三、获取字典的值
字典的查操作是获取字典的值
1.查单个
'''
1)字典[键] - 获取字典中指定键对应的值;当键不存在的时候会报错
2)字典.get(键) - 获取字典中指定键对应的值;当值不存在不会报错,返回None
3)字典.get(键,默认值) - 获取字典中指定键对应的值;当键不存在不会报错,返回默认值
'''
dog = {'name': '小黑', 'breed': '哈士奇', 'age': 3, 'color': '黑色'}
print(dog['breed'])
print(dog.get('name'))
student = {'name': '小明'}
print(student.get('age', 18))
2.遍历
'''
for 变量 in 字典:
循环体
变量取的是键
'''
dog = {'name': '小黑', 'breed': '哈士奇', 'age': 3, 'color': '黑色'}
for x in dog:
print(x)
用一个字典保存一个班级信息
class1 = {
'name': 'Python2106',
'address': '9教',
'lecturer': {
'name': '余婷',
'age': 18,
'tel': '13678192302',
'QQ': '726550822'
},
'head_teacher': {
'name': '张瑞燕',
'tel': '110',
'QQ': '7283211'
},
'students': [
{
'name': '陈来',
'age': 20,
'gender': '女',
'score': 98,
'contacts': {
'name': 'p2',
'tel': '120'
}
},
{
'name': '葛奕磊',
'age': 25,
'gender': '男',
'score': 80,
'contacts': {
'name': 'p1',
'tel': '119'
}
}
]
}
1.获取班级的名字
print(class1.get('name'))
2.获取讲师的名字和年龄
print(class1['lecturer']['name'], class1['lecturer']['age'])
3.获取班主任的名字和电话
print(class1['head_teacher']['name'], class1['head_teacher']['tel'])
4. 获取第一个学生的姓名
print(class1['students'][0]['name'])
5. 获取所有学生的联系人的名字
for x in class1['students']:
print(x['contacts']['name'])
6. 计算所有学生的平均分
score1 = []
for x in class1['students']:
score1.append(x['score'])
print(sum(score1) / len(score1))
四、字典的增删改
1.增 - 添加键值对
2.改 - 修改对应的值
语法:字典[键] = 值 - 当键存在的时候是修改,键不存在就是添加
goods = {
'name': '泡面',
'price': 3.5,
'count': 10
}
print(goods)
goods['price'] = 4
print(goods)
3.删
1)del 字典[键] - 删除字典中指定键的键值对
goods = {
'name': '泡面',
'price': 3.5,
'count': 10
}
del goods['price']
print(goods)
2)字典.pop(键) - 取出字典中指定键对应的值
goods = {
'name': '泡面',
'price': 3.5,
'count': 10
}
result = goods.pop('price')
print(goods)