day08总结

1.列表list补充

  1. 数学相关运算
  • 数学运算 + 、*
    列表1 + 列表2 - 将两个列表中的元素合并产生新的列表(原列表不会改变)
    列表*整数N 列表中的元素重复N次产生新的列表
list1 = [1, 2, 3]
list2 = ['name', 'age']
new_list = [1, 2, 3] + ['name', 'age']
print(new_list, list1, list2)
print(list1*3, list1)
  1. 比较运算 要求类型一致
  • ==, !=、> < >= <=
print([1, 2] == [2, 1])
print([1, 2] == [1, 2])
 # > < >= <= 依次比较同位置上元素的大小,分出大小则作为列表的大小
print([2, 2, 3] > [1, '2'])
  1. 内置函数
  • len(列表/序列) , sum(列表/序列)
    sum只能求和 纯数字列表
  • list(序列) - 将指定的序列转换成列表
# print(max([1, 'a'])) 只支持内部元素支持大小比较的序列,此处报错
print(list(range(9)))

4.列表相关方法

# 列表.count(元素)    - 返回指定元素在列表中出现的次数
print([1, 3, 4, 1, 5].count(1))
# list.extend(seq)  -将序列中的元素,添加到列表里面 无返回值
print(list1.extend('sf'), list1)
# list.index(元素) - 返回指定元素在列表中出现的下标,如果有多个,返回第一个没有则报错
list1 = [1, 2, 3, 's', 'f']
print(list1.index(1))
# list.reverse() - 将列表中的元素倒序, 不会产生新列表
list1.reverse()
print(list1)
#补充内置函数 reversed(序列) 将序列中的元素倒序,返回新的迭代器,原序列不会更改
print([i for i in reversed(list1)])
print(list1)
# list.sort()  -默认对列表中的元素进行升序排序
#要求列表中的元素一致,且支持比较运算
# 对原列表操作,不会产生新的列表
scores = [10, 100, 89, 20, 67, 34, 9]
scores.sort()
# list.sort(reverse=True) 降序排列
scores.sort(reverse=True)
print(scores)
# list.copy() 产生新的列表。浅拷贝
# 注意:python中变量存储的是数据在内存中的地址

2.元祖

  1. 什么是元祖
    元祖是不可变的列表,作为序列不可变,但是有序(不支持增删改,可以根据下标查找)内部元素要求和列表一样
    形式:(元素1, 元素2, 元素3,...)
  2. 查 - 获取元素
  • 遍历 数学运算, 比较运算, in\not in len() max() #min() sum()同列表
tuple1 = (1, 2, 3, 4)
print(tuple1[0], tuple1[-1])
# 切片结果是元祖
print(tuple1[0:5:2])

print((1, 2, 3) + ('a', 'b', 'b'))
print((1, 2, 3)*2)
print(100 in (1, 2, 3))
  • 元祖专有特性
    只有一个元素的元祖 必须在元素后加一个 ‘,’ 否则,会被看做元素本身
tu2 = (2)
tu1 = (2,)
print(type(tu1), type(tu2))
# 表示元祖时,元祖的括号可以省略
tu3 = 10, 20, 'abc'
print(tu3, type(tu3))
# 让变量的个数和元祖中元素的个数保持一致,可以让变量依次取出元祖中的元素
# 必须一致 否则报错
point = (100, 200)
x, y = point
print(x, y)

通过多个变量取获取元祖元素的时候,可以在某个变量前加 星号,将这个变量变成列表,获取不带*变量取完的数据剩下的部分

# 带*变量只能有一个, 并且可以取0个或以上个值,以列表形式赋值
students = ('小明', 30, 10, 175, 70)
name, age, *scores, height, weight = students
print(name, scores)

3.字典

  1. 什么是字典()
    字典是python内置的一个容器型数据类型,可变(支持增删改), 无序(不支持下标操作)
  • 形式:{键1:值1, 键2:值2,...} 键:值 键值对
    键(key):a.不可变, b.唯一
    值(value): 任意数据和列表元素要求相同
    注意: 键值对成对出现,字典存储数据,是指存储的是值,键是索引
dict1 = {'a': 10, 'b': 'av', 'c': [1, 2]}
dict2 = {[1]: 10}   #报错
print(dict1)
dict3 = {(1, 2): 10}
# 键存在相同时,以最后一个为主
dict1 = {'a': 10, 'b': 'vv', 'c': [1, 2], 'a': 4}
  1. 什么时候用字典
    如果同时保存的多个数据是具有相同意义的数据,优先列表
    如果数据间意义不同,优先使用字典

  2. 查- 获取字典的值

  • 获取key对应的值:字典[key] - 获取字典中指定key对应的值
dog1 = {'name': '大黄', 'type': '中华田园犬', 'color': 'yellow', 'age':3}
print(dog1['type'])
#print(dog1['gender']) #KeyError: 'gender' 不存在的键
# 获取key对应的值
# 字典.get(key) - 获取字典中指定key对应的值
# 字典.get(key, 默认值) - 获取字典中指定key对应的值,如果key不存在,返回指定的默认值
#如果键不存在,则返回None
# None - 关键字,表示数据为空或没有
print(dog1.get('color'))
print(dog1.get('gender'))
  1. 遍历
# 直接遍历字典拿到的是key 推荐此方法
for x in dog1:
    print(x, dog1[x])

# 遍历值,先将值取出放入dict_values() 后遍历值,占内存
for value in dog1.values():
    print(value)
#遍历键 占内存
for key in dog1.keys():
    print(key)
# 遍历键和值 占内存
for key, value in dog1.items():
    print(key, value)
  1. 增、改 — 添加键值对,修改键值对
  • 字典[key] = 值 key不存在时,添加键值对,key存在时,修改值
film = {'name': '流浪地球', '主演': '吴京', 'time': '2019-02-05'}
film['票房'] = '40亿'
print(film)
film['time'] = '2019-02-08'
print(film)
# 字典.setdefault() 给字典的键添加默认值,如果存在,则不处理,不存在则增加键值对
film.setdefault('name', '战狼')
film.setdefault('aba', 'b')
print(film)
  • del 字典[key] - 删除字典中对应的键值对, key不存在会报错
del film['aba']
print(film)
# 字典.pop(key) - 取出字典中key对应的值,结果是key对应的值
print(film.pop('name'))
print(film)
  1. 相关运算
  • 字典不支持数学运算,只支持比较运算符
print({'a': 10, 'b': 20} == {'b': 20, 'a': 10})
# in \ not in
# key in 字典  - 判断字典中是否存在某个key
student = {'name': '小明', 'age': 20, 'tel': '24323536'}
print('小明' in student)
print('name' in student)
  • len(), max(), min()
    max min 比较的是key
  • dict() 将其他类型转化为字典
    序列中的元素为 只有两个元素的序列,
    对应key的元素需满足成为key的条件字典
  • 字典转列表、元祖的时候,是将字典的key取出作为列表、元祖的元素
  1. 相关方法
    dict.clear() -清空字典
    dict.copy() -复制字典的内容,产生新的字典
    dict.fromkeys(序列,值) -创建一个新的字典,将序列中的元素作为新字典的key,指定的值作为每一个key的值
    dict11 = dict.fromkeys(student, 10)
    print(dict11)
    字典1.update(字典2) - 用字典2的键值对更新字典1,
    字典1 不存在则增加, 存在则更改
  • 注意:字典作为序列直接取出的的都是键

你可能感兴趣的:(day08总结)