1.27学习总结

一、列表的相关操作

1.列表推导式

​ 1.序列变换成列表

nums = [10, 23, 56, 88]
list1 = [x % 10 for x in nums]      # 将原列表的数据进行相关变换,重新赋值到新列表
print(list1)

​ 2.筛选

scores = [89, 56, 63, 36, 12, 55, 68]
new_scores = [x for x in scores if x >= 60]     # 循环后加if,肯定是进行筛选
print(new_scores)

​ 3.不同统一变换 —三目运算符

list2 = [89, 56, 'dsa', 36, 'fw', 55, 68]
# if条件为真,返回if前的值,为假,返回else后的值
new_list2 = [x * 10 if type(x) == int else x for x in list2]
print(new_list2)

2.列表的加法和乘法运算

​ 1.列表1 + 列表2 —拼接产生新的列表,原列表不变

a = [1, 2, 3]
c = ['后裔', '伽罗']
result = a + c
print(result)

​ 2.列表*N —列表中的元素重复N次产生新的列表

a = [1, 2, 3]
print(a * 3)

3.比较运算

# 1)比较相等:==, !=
print([1, 2, 3] == [1, 2, 3])   # True
print([1, 2, 3] == [3, 2, 1])   # False 元素,顺序,数量都相等
# 类型不同也可以比较,但是结果是False
print([1, 2] == '[1, 2]')       # False
# is的用法:判断两者的地址(容器)是否是同一个地址(容器)
print('is :', 2 is 2)       # True
print('is :', [1, 2] is [1, 2])     # False
# python 中的,保存的都是变量的地址,都是通过地址(获取值)进行运算
list1 = [1, 2]
list2 = list1   # list1的地址给了list2
print('is :', list1 is list2)       # True

"""
结论1:用数据给变量赋值的时候,如果数据不可变,那么会复用前面存储的值
如果数据可变,不管之前有没有存储过,都会开辟新的内容空间
id()
"""
# 数字不可变
a = 100
b = 100
print(id(a), id(b))     # 2609310225872 2609310225872

# 列表可变
a = [1, 2]
b = [1, 2]
print(id(a), id(b))     # 2609313198336 2609313192704

# 元组不可变
a = (1, 2)
b = (1, 2)
print(id(a), id(b))     # 1616267573184 1616267573184
# 字典可变
a = {'a': 10}
b = {'a': 10}
print(id(a), id(b))     # 1742748082432 1742748137088
"""
结论2:如果一个变量给另外一个变量赋值,其实是赋值了一个地址给其他变量
"""
a = 100
b = a
print(id(a), id(b))     # 2609310225872 2609310225872

a = [10, 20]
b = a
print(id(a), id(b))     # 2609313192704 2609313192704

二、列表的相关函数和方法

1.相关函数

  1. max和min —max(序列):最大值 min(序列):最小值

    nums = [89, 56, 63, 36, 12, 55, 68]
    print(max(nums))
    print(min(nums))
    
  2. sum() —sum(序列) --求序列中元素(只能是数字)之和

    print(sum(nums))
    print(sum(range(20)))
    
  3. sorted() --排序(产生新列表)

    nums = [89, 56, 63, 36, 12, 55, 68]
    
    # 1)).sorted(序列)    --升序排列(返回一定是列表)
    new_nums = sorted(nums)     # --形成新的列表,不会改变原来的
    print(new_nums)         # [12, 36, 55, 56, 63, 68, 89]
    
    # 2)).sorted(序列,reverse = True)
    new_nums = sorted(nums, reverse=True)
    print(new_nums)         # [89, 68, 63, 56, 55, 36, 12]
    
    # 3)).list()    list(序列)    -任何序列转换成列表
    list1 = list('saffd')
    print(list1)
    list1 = list(range(10, 15))
    print(list1)
    

2.相关方法

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

song = ['小摩托', '七友', '告白气球']
print(song.clear())

​ 2.列表.copy() --返回一个和原列表相同的列表

song = ['小摩托', '七友', '告白气球']
song2 = song.copy()
print(song2)

​ 3.列表.count(元素) --返回元素在列表中出现的次数

nums = [89, 56, 63, 36, 12, 55, 68]
print(nums.count(12))

​ 4.列表.extend(序列) --将序列中的元素全部添加到列表中

song = ['小摩托', '七友', '告白气球']
song.extend(['夜的第七章', '超跑女神'])
print(song)

​ 5.列表.index(元素) --返回元素的下标(是0 开始的那个)

song = ['小摩托', '七友', '告白气球', '夜的第七章', '超跑女神']
print(song.index('夜的第七章'))

​ 6.列表.reverse() --列表逆序(直接在原列表中改变元素的顺序)

song = ['小摩托', '七友', '告白气球', '夜的第七章', '超跑女神']
song.reverse()
print(song)

​ 7.列表.sort() --直接修改原列表的顺序,不产生新列表

nums = [89, 56, 63, 36, 12, 55, 68]
nums.sort()
print(nums)

三、认识字典

"""
1).字典将{}作为容器的标志,里面多个元素(键值对)用逗号隔开:{键1:值1,键2:值2}
键的作用是对值进行区分和说明的
2).字典可变(支持增删改),是无序的(不支持下标)
3).字典的元素    --必须是键值对
键   --必须是不可变的数据(一般使用字符串)、唯一的
值   --任何类型数据都行,可重复
"""
dict1 = {}  # --空字典
dict2 = {10: 10, 'name': '张三'}
print(dict2)
dict3 = {10: 11, 20: 56, 10: 96}    # {10: 96, 20: 56}
print(dict3)            # 去掉之前重复的键,保留最后一个

# 练习:定义一个变量保存一条狗的信息
dog = {
    'name': '旺财',
    'age': 3,
    'sex': '母狗',
    'breed': '土狗'
}

四、字典的增删改查

1.查

​ 1.获取单个值

a.字典[key]   --获取字典中指定对应的值,key不存在的时候(报错)
b.字典.get(key)     --获取字典中指定对应的值,key不存在的时候(不报错,并返回None)
c.字典.get(key, 默认值)    --key存在,照常;key不存在时,返回自己指定类型的值(方便自己操作)

​ 2.遍历 --for in

dict2 = {10: 10, 'name': '张三'}
for x in dict2:     # 变量取到的值是 键
    print(x, dict2[x])
# 练习:定义一个变量保存一个班所有的学生信息,每个学生中包含姓名、年龄、性别、电话号码
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'}
]
# 1)计算这个这个班的学生的平均年龄
# 方法一
ages = 0
for stu in students:
    ages += stu['age']
print('平均年龄:', ages / len(students))
# 方法二
av_ages = sum([x['age']for x in students]) / len(students)
print('平均年龄:', av_ages)
# 2)统计班级中女生的个数
# 方法一
count = 0
for stu in students:
    if stu['gender'] == '女':
        count += 1
print('女生的个数:', count)
# 方法二
result = [x['gender']for x in students].count('女')
print('女生的个数:', result)

2.增、改

​ 字典[key] = 值 --key存在就修改,不存在就是增加

computer = {'price': 4566, 'brand': '联想'}
print(computer)
computer['color'] = '白色'
print(computer)

3.删

​ 1. del 字典[key] --删除指定键值对(key不存在就报错)

computer = {'price': 4566, 'brand': '联想', 'color': '白色'}
del computer['price']
print(computer)

​ 2.字典.pop(key) --删除指定键值对(取出指定key对应的’值‘)

computer = {'price': 4566, 'brand': '联想', 'color': '白色'}
brand1 = computer.pop('brand')
print(computer, brand1)

五、字典相关操作和方法

# 1.in 和 not in 操作
# 字典的in 和 not in判断的是某个key是否存在

# 2.dict
"""
  dict(序列) - 将序列转换成字典
序列的要求:
a.序列中的每个元素都是序列
b.小序列中必须有且只有两个元素
c.小序列中的第一个元素必须是不可变的
"""
seq = ['ab', '12', 'a1', 'c1']
print(dict(seq))     # {'a': '1', '1': '2', 'c': '1'}
seq2 = [range(2), ['name', '小明']]
print(dict(seq2))    # {0: 1, 'name': '小明'}
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页