day7.总结 列表、字典

day7.总结 列表、字典

一、列表相关操作

1、列表推导式

  1. 序列变换成列表
tr1 = ‘abcd’
list1 = [x for x in str1]
print(list1)
  1. 筛选(提取出有限的或者删除无效的)
scores = [89, 8, 100, 98, 67, 34, 59, 45, 23, 78, 92]
new_scores = [x for x in scores if x >=60]
print(new_scores)
  1. 不统一的变幻
list4 = [19, 'abc', 98, 'asd', 13, 53]
new_list4 = [x**10 if type(x) == int else x for x in list4]

2、列表的加法乘法

  1. 列表1+列表2
a = [1, 2, 3]
b = ['后裔', '鲁班七号']
result = a + b # [1, 2, 3, '后裔', '鲁班七号']
print(result)
  1. 列表 * 整数 – 列表中的元素重复N次产生一个新列表
print(a*3)

3、比较运算

  1. 比较相等: == 、!=
print([1, 2, 3] == [1, 2, 3])  # True
print([1, 2, 3] == [1, 3, 2])   # False
print([1, 2] == 'abc')  # False
  1. is 的用法: is的实质是判断两个数据的地址是否一样
print(2 is 2)  #  True  相同的不可变数据,地址是相同的
print('you' is 'you')  # True
print([1, 2] is [1, 2])   # False  #可变数据储存的地址是不同的如果数据可变,不管之前有没有存储过,都会重新开辟新的内容空间。

​ id(变量) – 获取变量中保存数据在内存空间中的地址,

​ 数字是不可变数据

a = 100
b = 100
print(id(a), id(b))

列表是可变数据

a = [1, 2, 3]
b = [1, 2, 3]
print(id(a), id(b))

元组是不可变数据

a = (10, 20)
b = (10, 20)
print(id(a), id(b))

字典是可变的

a ={'a': 10}
b ={'a': 10}
print(id(a), id(b))

结论如果用一个变量给另外一个变量赋值,其实是让新的变量保存原变量中的数据的地址。(不会开辟新的空间保存数据)

python中所有的变量都是指针变量。(变量保存数据的时候其实保存的是数据在内存中的地址)

二、列表相关函数和方法

1.相关函数

  1. max 和min

max(序列) – 返回序列中元素的最大值 元素之间必须支持比较

min(序列) – 返回序列中元素的最小值 元素之间必须支持比较

nums = [12, 13, 56, 48, 123]
print(max(nums))
print(min(nums))
  1. sum

sum(序列) – 求序列中所有元素的和 只能求数字序列的和

print(sum(range(101)))  # 从0加到100和
  1. sorted

sorted(序列) – 对序列中的元素从小到大进行排序(升序),以列表的形式返回
sorted(序列,reverse=True) – 从大到小排序(降序), 不会改变原列表,生成一个新列表

nums = [12, 13, 56, 48, 123]
sorted(nums)
print(sorted(nums))
  1. list

list () 将序列转换成列表 – 必须是序列

list1 = list('abcd')
print(list1)

2. 相关方法

  1. 列表.clear() --删除列表中的所有元素

    song =['关山酒', '将故事写成我们', '身骑白马', '告白气球']
    song.clear()
    print(song)
    
  2. 列表.copy() – 返回一个和原列表一模一样的新列表(地址不同)。列表[:],列表+[]、列表*1 相同作用

song =['关山酒', '将故事写成我们', '身骑白马', '告白气球']
song2 = song.copy()
print(song2)
song3 = song
print(song3)
song.append(100)
print(song3) # ['关山酒', '将故事写成我们', '身骑白马', '告白气球',100]  --赋值的列表地址相同
print(song2)# ['关山酒', '将故事写成我们', '身骑白马', '告白气球']  --copy的列表地址不同
  1. 列表.count(元素) – 返回元素在列表中出现的次数(个数)
nums = [1, 2, 3, 4, 1, 1, 1, 5, 2, 2, ]
print(nums.count(1))
  1. 列表.extend(序列) – 将序列中的元素全部添加到列表中
song =['关山酒', '将故事写成我们', '身骑白马', '告白气球']
song.extend(['counting star', '加州旅馆'])
print(song)
  1. 列表.index(元素) – 返回元素在列表中的下标 (步长为1的下标值)
song =['关山酒', '将故事写成我们', '身骑白马', '告白气球', '身骑白马']
print(song.index('身骑白马'))  # 如果元素在列表中有多个,只会显示最前面的那个元素的下标,如果元素没有,就会报错
  1. 列表.reverse() – 列表逆序 将原列表逆序,不会生成新的列表
song =['关山酒', '将故事写成我们', '身骑白马', '告白气球']
song.reverse()
print(song)
  1. 列表.sort() 修改原列表中元素的顺序,不会生成新列表
nums = [89, 25, 78, 12, 123, 54]
song.sort()
print(song)

三、认识字典

1.什么是字典 类型名:dict

  1. 字典是容器性数据类型,将{}作为容器的标志,里面多个元素(元素都是键值对)用逗号隔开。 – {键1:值1,键2:值2,…}
    注意:字典保存数据,其实是想要保存的是值,键的作用是对值进行区分和说明的。

  2. 字典是可变的(支持增删改),无序的(不支持下标操作)

  3. 字典的元素 – 必须是键值对
    键 – 必须是不可变的数据(一般使用字符串),唯一的
    值 – 任何类型的数据,可以重复

dict1 = {}  # 是空字典
dict2 = {10: 100, 'name': '张三', True: 300} # 不可变的数据才能作为键

四、字典的增删改查

1. 查 ---- 获取某个值

  1. 获取单个值

    a. 字典[key] – 获取字典中指定key对应的值, 如果Key不存在,会报错

movies = {'name': '肖生克的救赎', 'director': '弗兰克', 'time': '1994'}
print(movies['name'])

​ b. 字典.get(key) – 获取字典中指定key对应的值, 如果key不存在,不会报错,返回None

print(movies.get('name'))
print(movies.get('age'))

​ c. 字典.get(key,默认值) 获取字典中指定key对应的值, 如果key不存在,不会报错,返回默认值

print(movies.get('age', 1))
  1. 遍历 for in 遍历字典的时候,变量取到的是字典的键
movies = {'name': '肖生克的救赎', 'director': '弗兰克', 'time': '1994'}
for x in movies:
    print(x, movies[x])
练习:定义一个变量保存一个班所有的学生信息,每个学生中包含姓名、年龄、性别、电话号码
# 1)计算这个这个班的学生的平均年龄
# 2)统计班级中女生的个数
students = [
    {'name': 'stu1', 'age': 18, 'gender': '男', 'tel': '1101'},
    {'name': 'stu2', 'age': 22, 'gender': '女', 'tel': '1104'},
    {'name': 'stu3', 'age': 30, 'gender': '女', 'tel': '1102'},
    {'name': 'stu4', 'age': 23, 'gender': '男', 'tel': '1106'},
    {'name': 'stu5', 'age': 24, 'gender': '男', 'tel': '1109'},
    {'name': 'stu6', 'age': 16, 'gender': '女', 'tel': '1100'}
]
#方法一:
ages = 0
for x in students:
    ages += x['age']
average_age = ages / len(students)

count = 0
for stu in students:
    if stu['gender'] == '女':
        count += 1
print('女生的人数', count)
#方法二
avg_age = sum([x['age'] for x in students]) / len(students)
print(avg_age)
result = [x['gender'] for x in students].count('女')
print(result)
  1. 增、改

字典[key] = 值 当key存在的时候就是修改,如果不存在的时候就是增加

computer = {'price': '5432', 'brand': '联想'}
computer['color'] = '白色'
rint(computer)
  1. a.del 字典[key] – 删除字典中指定key对应的键值对 key不存在会报错

del computer['price']
print(computer)

​ b. 字典.pop(key) – 取出字典中指定key对应的值

computer = {'price': '5432', 'brand': '联想'}
price = computer.pop('price')
print(computer, price)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值