python基础3-列表/元组/字典
-
数字和字符串的作业反馈
- int()转换为数字,str()转换为字符串,bool()转换为布尔值
- 只要能被for循环获取,就是可迭代对象
- str,int是类型,s1= "alex",即根据str类型创建一个对象s1。
- pycharm中code-reformat code即可帮助更正代码的正确格式
-
列表
- 深灰魔法
- list是类,特征是[],逗号分隔每个元素,列表可以嵌套任何数据类型。
- 索引取值,0开始。索引修改。索引删除,del_li[ x],即删除li的下标为x的元素
- 切片取值,[],左闭右开。切片修改,切片删除
- 列表的内容可以修改,因为列表是链表,只需要改变存储的下一个地址即可
- in操作,not in操作
- li[4][1][0],找到列表第4个元素的第1个元素的第0个元素
- 字符串可以转换为列表,数字不能转换为列表
- 列表转换成字符串:
- 既有数字又有字符串的情况,需要自己写for循环一个一个处理
- 如果只有字符串的情况,v = "".join(li),既可以将列表转换为字符串
- 灰魔法,list中提供的方法
- li对象调用append方法。li.append(5),在列表li后追加一个元素5
- li.extend([9898,"不得了"]),将可迭代对象的每一个元素加至列表li中。iterable是可迭代对象,列表和字符串是可迭代对象
- li.clear(),清空列表
- v = li.copy(),将列表li浅拷贝至列表v中
- li.coount(22),计算元素在列表li中出现的次数
- li.index(22),在列表li中检索22所在位置,左边优先,可以限定起始位置和终止位置
- li.insert(0,99),在列表li的索引位置0加入元素99
- v=li.pop(),获取那个列表li中被删除的值,按照索引删除,可以指定删除的索引,默认删除最后一个
- li.remove(22),删除列表中的指定值,左边优先
- 删除列表的方式,pop方式,remove方式,del li[0]方式,del li[7:9]方式,clear方式
- li.reverse(),列表反转
- li. sort(reverse = true),将列表元素从大到小进行排序
-
元组
- 深灰魔法
- tuple,类,(11,22,33,44)。对列表的二次加工。元组的一级元素不可修改,不能增加或删除,但是如果一级元素的列表,则列表的元素可以修改
- 创建元组的时候,在右括号前加逗号,不报错,一眼认出是元组,(11,22,"alex",)
- 索引取值
- 切片取值
- 支持for循环,也是可迭代对象
- 元组,列表,字符串可以互相转换,元组只有字符串时,可以用join。如果有数字和字符串,要自己写for循环
- 元组也是有序的
- v = tu[3][0],获取元组中索引为3的元素中索引为0的元素
- 灰魔法
- tu.count(22),获取指定元素在元组中出现的次数
- tu.index(22),获取指定元素在元组的索引位置
-
字典
- info = { "k1": "v1","k2":"v2"} ,每个元素称为键值对
- 类,dict,{}。key不能取列表/字典,其余均可以。value可以是任意数据类型,可以嵌套多层。但是key不能重复,如果重复,则后边的失效
- 字典是按照哈希值保存的,key不论是什么类型,都会被转换为哈希值。列表等不能被转换为哈希值,所以不能作文key
- 字典是无序的,一个字典每次打印时,显示顺序不一定
- v = info[key],key做为索引来取值
- v = info['k3'][5]['kk3'][0],找到多层嵌套的元组第一个元素
- 因为无序的,所以不能用切片
- del info['k1'],删除字典info中key为'k1'的键值对
- for k,v in info.items() info.keys info.values,依次是获取字典info的键值对(key给k,对应的value给v),key,value
- not in和in也能用,v = "k1" in dic,默认是循环key
- 灰魔法
- info.clear(),清空字典
- info.copy(),浅拷贝
- 静态方法,dict.fromkeys(["k1",123,"999"],123)建立一个以k1,123,999为key的字典,指定统一的value值123
- v = dic.get('k11111',111),从字典中获取key为k1111的value,如果不存在,则返回111。
- keys,items,values,以集合的形式返回字典的相应参数
- v = dic.pop('k1',999),在dic中删除key为'k1'的键值对,同时v获取到对应的value。如果删除失败,则返回999
- v = dic.popitem(),随机删除字典键值对,但是v拿到的是键值对
- v = dic.setdefault('k1111','123'),在字典dic中设置键值对,如key已经存在,则不设置,v拿到已有值。如果key不存在,则设置,v拿到新值
- dic.update({'k1':'1111','k3':123}),将已有key的value更新,将未有key的键值对新增。
- dic.update(k1= 123, k3= 345,k5 = "asdf"),功能与上边相同
-
布尔值
-
空字典'None',空列表[],空元组(),空字典{} , 数字0 都是false