疯狂Python讲义笔记

第3章 列表、元组、字典##

Python的序列

  1. 创建列表:my_list = [, , , ];创建元祖:my_tuple = (, , ,)
  2. 索引:a_list/tuple[0]

列表和元组的通用用法

  1. 子序列(slice): [start : end : step] start在end的左边
  2. 加法:只能同类型相加 e.g. sum_tuple = a_tuple + b_tuple
  3. 乘法:mul_tuple = a_tuple * 4
    order_endings = (‘st’,‘nd’,‘rd’,) + (‘th’,) * 17 + (‘st’,‘nd’,‘rd’,) + (‘th’,) * 7 + (‘st’,)
    day = input(“输入日期(1-31):”)
    day_int = int(day)
    print(day + order_endings[day_int - 1])
  4. in操作符:20 in a_tuple
  5. 长度、最大值、最小值: len(), max(), min()
  6. 序列封包和解包封包 e.g. vals = 10,20,30
    解包 e.g. a_tuple = tuple(range(1,10,2))
    a,b,c,d,e = a_tuple
  7. 同时多值赋给多个变量:x,y,z = 10,20,30
  8. 交换变量的值:x,y,z = y,z,x
  9. 部分解出变量:first,second,*rest = range(10) # 0, 1, [2…9]

使用列表

  1. 创建列表 list(tuple or range)
  2. 创建元组 tuple(list or range)
  3. 增加列表元素 list.append() 在列表末尾添加元素,将加入的列表或元组当做一个元素;list.extend() 在列表末尾添加元素,将加入的列表或元组拆分成单个元素。
  4. 在中间插入元素 list.insert(index,‘a’), 若插入的为列表或元组则当成被拆分成多个字母的一个元素。
  5. 删除列表元素 del语句 del list[0];也可删除变量 del name
    remove()方法 list.remove(‘a’) #删除第一次找到的’a’; clear()方法 list.clear(),清空列表中所有元素。
  6. 修改列表元素 对列表元素赋值相当于修改列表元素。
    b_list = list(range(1,5))
    print(b_list)
    b_list[1:3] = [‘a’,‘b’]
    print(b_list) #[1,‘a’,‘b’,4]
    对列表中空的slice赋值,就相当于插入元素
    b_list[2:2] = [‘x’,‘y’]
    赋空值相当于删除元素
    b_list[2,5] = []
    用slice语法赋值时,不能使用单个值,否则该值会被当做序列处理,其中每一个字符变为一个元素
    b_list[1:3] = ‘Charlie’
    print(b_list) # [1,‘C’,‘h’…]
    若指定了step,则被赋值元素个数与赋值列表元素个数相等
    c_list = list(range(1,10))
    c_list[2:9:2] = [‘a’,‘b’,‘c’,‘d’]
  7. 列表的其他方法
    dir(list) 查看列表包含的所有方法
    count() 统计列表中某个元素出现次数 list.count(‘a’)
    index() 判断某个元素在列表中出现的第一个位置 list.index(30);list.index(30,start,end)
    pop() 将列表当成“栈”用,实现元素出栈。
    stack = []
    stack.append(‘a’)
    stack.append(‘b’)
    stack.append(‘c’)
    print(stack.pop()) # 将最后入栈的元素移出栈,返回出栈的元素
    print(stack) #[‘a’,‘b’]
    reverse 将列表中元素反向存放 list.reverse()
    sort 元素排序 list.sort()
    传入key和reverse参数进行排序:
    #按照字符串长短进行排序
    b_list.sort(key=len)
    b_list.sort(key=len,reverse=True)

使用集合

{}生成集合,集合中不含相同元素:
疯狂Python讲义笔记_第1张图片
疯狂Python讲义笔记_第2张图片

使用字典

  1. dict中的key必须不可变(可用元组作为key,不能用列表),且唯一。
  2. 创建字典:scores = {‘语文’:83,‘数学’:95,‘英语’:95}
    vegetables = [(‘celery’,1.58),(‘brocoli’,1.29)]
    dict1 = dict(vegetables)
    或者将元组换为列表
    使用关键字参数创建字典,此时可用省略引号。
    dict2 = dict(spinach = 1.39, cabbage = 2.59)
  3. 字典的基本用法:通过key访问value,添加key-value对,删除key-value对,修改key-value对,判断指定key-value对是否存在。
    scores[‘语文’]
    对不存在的key赋值,就是增加key-value对
    scores[‘政治’] = 96
    使用del语句删除key-value对
    del scores[‘语文’]
    对已存在的key赋值,会覆盖原有的value
    scores[‘政治’] = 94
    使用in 或not in判断字典是否包含指定的key
    print(‘AUDI’ in cars) #True
    字典的常用方法
    ==dir(dict)==查看字典包含哪些方法
    dict.clear() 清空字典
    dict.get() 根据key获取value,当用[]访问不存在的key时,字典会报错;但用get()访问时,只会返回None。
    dict.update() 使用一个字典更新原来字典,若被更新字典已包含对应的key-value对,则原value会被覆盖,若不包含,则该key-value对被添加进去。
    dict.items(),dict.keys(),dict.values() 分别获取字典中所有key-value对,key,value。依次返回dict_items,dict_keys,dict_values对象,Python不希望用户直接操作这几个方法,但可通过list()函数将其转换为列表。
    cars = {‘BMW’:8.5,‘BENS’:8.3,‘AUDI’:7.9}
    ims = cars.items()
    print(list(ims)) #[(‘BMW’, 8.5), (‘BENS’, 8.3), (‘AUDI’, 7.9)] 输出一个由元组组成的字典
    print(list(ims)[1])
    kys = cars.keys()
    print(list(kys))
    ==dict.pop()==获取指定key对应的value,并删除这个key-value对。
    print(cars.pop(‘AUDI’))
    dict.popitem() 随机弹出字典的一个key-value对。(其实是最后一个key-value对,但由于dict中key-value对的顺序是不可知的,因此感觉是随机弹出的)
    print(cars.popitem()) #弹出的是一个元组:(‘AUDI’,7.9)
    对序列解包可以用两个变量接收key和value。
    k,v = cars.popitem()
    print(k,v) # BENS 8.3
    ==dict.setdefault()==根据key获取对应的value值,若key在字典中不存在,则为这个不存在的key设置一个默认的value,再返回该key对应的value值。
    print(cars.setdefault(‘PORSCHE’,9.2))
    print(cars)
    9.2
    {‘BMW’: 8.5, ‘BENS’: 8.3, ‘AUDI’: 7.9, ‘PORSCHE’: 9.2}
    fromkeys() 使用给定的多个key创建字典,这些key对应的value都是None,也可以用额外的参数作为默认的value
    a_dict = dict.fromkeys([‘a’,‘b’])
    print(a_dict) #{‘a’: None, ‘b’: None}
    c_dict = dict.fromkeys([‘a’,‘b’],‘good’)
    {‘a’: ‘good’, ‘b’: ‘good’}
    使用字典格式化字符串
    temp = ‘书名是:%(name)s,价格是:%(price)010.2f,出版社是:%(publish)s’
    book = {‘name’:‘疯狂Python讲义’,‘price’:88.9,‘publish’:‘电子社’}
    print(temp % book)
    #书名是:疯狂Python讲义,价格是:0000088.90,出版社是:电子社

字符串、列表、集合、元组、字典相互转换
https://www.cnblogs.com/egrep/articles/8687169.html

课后习题
疯狂Python讲义笔记_第3张图片
疯狂Python讲义笔记_第4张图片
疯狂Python讲义笔记_第5张图片

你可能感兴趣的:(Python)