zoukankan      html  css  js  c++  java
  • 5、列表+元组+字典

    5、列表+元组+字典

    一、列表类型

    作用:多个装备,多个爱好,多门课程,多个女朋友

    定义: []内可以有多个任意的值,逗号分隔

    my_habbies = ['study','reading','money','woman']
    l = list('abc)>>>>>['a','b','c']
    

    优先掌握的操作:

    1、按索引存取值(正向存取+反向存取):即可存也可以取
    2、切片(顾头不顾尾,步长)

    l=[11,22,33,44,55,66,77]
    l[0:6:2]
    new_l = l[:] `         相当于复制一个l 不过是浅copy
    l = [11, 22, ["xx", "yy"]]
    new_l = l[:]
    new_l[0] = 66
    new_l[2][0]='zz'
    print("新列表",new_l)      
    print("原列表",l)
    **新列表 [66, 22, ['zz', 'yy']]**
    **原列表 [11, 22, ['zz', 'yy']]**
    浅拷贝(shallowCopy)只是增加了一个指针指向已存在的内存地址,
    深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存,
    

    from copy import deepcopy(深拷贝)

    
    new_l1 = deepcopy(l)
    print(id(l[0]), id(l[1]), id(l[2]))
    print(id(new_l1[0]), id(new_l1[1]), id(new_l1[2]))
    
    new_l1[2][0]="zzzzz"
    print(new_l1)
    print(l)
    deepcopy会拷贝子列表的索引,有多少循环就会一直拷贝下去,改变copy 的值不会影响原值
    

    3、长度

    len(l)

    4、成员运算in和not in

    5、追加

    l.append(值) 加在末尾
    l.insert(索引,值) 指定位置插入
    

    6、删除

    del l[0]
    l.remove(元素)
    res = l.pop(索引)
    

    7、循环

    for x in l:
        print(x)
    for i,x in enumerate(l):
        print(i,x)
    

    需要掌握的操作(****)

    l=[11,22,33,44,33,33,55]
    new_l = l.copy()  # new_l = l[:]
    print(len(l))  # l.__len__()
    

    1、判断是否存在 不存在会报错

    ####2、出现的次数
    l.count() 出现的次数
    print(l.count(33))
    

    3、清空列表

    l.clear()
    l.clear()
    print(l)
    

    4、可插入多个值l.extend()

    l.extend("hello")   插入的为'h','e','l','l','o'
    l.extend([1,2,3])   插入的为'1','2','3'
    l.append([1,2,3])   插入的为[1,2,3]
    print(l)
    

    5、颠倒顺序

    l.reverse()  
    l.reverse()
    print(l)
    

    6、排序

    l.sort()
    l=[11,-3,9,7,99,73]
    l.sort(reverse=True)
    print(l)
    

    列表相关总结

    1、可存多个值

    2、有序

    3、可变

    二、元组类型

    元组tuple基本使用

    1、用途:元组就相当于一种不可变的列表,所以说元组也是按照位置存放多个任意类型的元素

    2、定义方式:在()内用逗号分隔开个多个任意类型的元素

    x=(11)
    print(x,type(x))
    
    t=(11,11.33,"xxx",[44,55])  # t = tuple(...)
    print(t[-1][0]) >>>44
    print(type(t))  >>>><class,'tuple'>
    

    数据类型转换

    tuple(可迭代的类型)

    注意:如果元组内只有一个元素,那么必须用逗号分隔

    t=(11,)
    print(type(t))
    

    3、常用操作+内置的方法

    优先掌握的操作:

    1、按索引取值(正向取+反向取):只能取

    t=(11,22,33)
    t[0]=7777
    2、切片(顾头不顾尾,步长)
    t=(11,22,33,44,55,666)
    print(t[0:4:2])
    

    t=(11,22,33,44,55,666)
    print(len(t))>>>>>6
    

    4、成员运算in和not in

    t=(11,22,33,[44,55,666])
    print([44,55,666] in t)
    

    5、循环

    t=(11,22,33,[44,55,666])
    for x in t:
        print(x)
    

    需要掌握

    t=(33,22,33,[44,55,666])
    print(t.count(33))
    print(t.index(33,1,4))>>>>>1,4是判断从索引1 到索引4之间
    

    ==该类型总结

    存多个值

    有序

    不可变

    t=(11,22,[33,44])
    t[2]=777
    print(id(t[0]),id(t[1]),id(t[2]))
    t[2][0]=777
    print(t)
    print(id(t[0]),id(t[1]),id(t[2]))
    

    三、字典基本使用

    1、用途:按照key:value的方式存放多个值,其中key对value应该有描述性的效果

    2、定义方式:在{}内用逗号分隔开多个元素,每个元素都是key:value的组合,其中value可以是任意类型

            但是key必须是不可变类型,通常是字符串类型,并且key不能重复
    
    d={1:111111,1.1:22222222222,"k1":333333,(1,2,3):44444444,[1,2,3]:5555}  # d=dict(...)
    print(d[1])
    print(d[1.1])
    print(d[(1,2,3)])
    

    3、数据类型转换

    res = dict([("name","egon"),["age",18],["gender","male"]])
    print(res)>>>>>>{'name': 'egon', 'age': 18, 'gender': 'male'}
    
    res = dict(a=1,b=2,c=3)
    print(res)>>>>>>>{'a': 1, 'b': 2, 'c': 3}
    
    d={}
    d=dict()
    print(type(d))>>>>>>><class 'dict'>
    

    只改变name,其他不会变

    res = {}.fromkeys(['name',"age","gender"],None)
    res = {}.fromkeys(['name',"age","gender"],11)
    res["name"]=666
    print(res)>>>>>>>>{'name': 666, 'age': 11, 'gender': 11}
    

    用append()添加,其他也会跟着变

    res = {}.fromkeys(['name',"age","gender"],[])
    res["name"].append(1111111)
    print(res)>>>>>>>{'name': [11111], 'age': [11111], 'gender': [11111]}
    

    3、常用操作+内置的方法

    优先掌握的操作:

    1、按key存取值:可存可取

    d={"k1":111,'k2':222}
    print(d['k1'])
    d['k1']=6666
    d['k3']=6666
    print(d)>>>>>>>{'k1': 6666, 'k2': 222, 'k3': 6666}
    

    2、长度len

    d={"k1":111,'k2':222}
    print(len(d))>>>>>>2
    

    3、成员运算in和not in: 判断的是key

    d={"name":"egon",'age':18}
    print("name" in d)
    

    4、删除

    d={"name":"egon",'age':18}
    print(d)
    del d["name"]
    
    v = d.pop("name")
    print(d)
    print(v)
    
    item = d.popitem()
    print(item)
    print(d)
    

    5、键keys(),值values(),键值对items()

    d={"name":"egon",'age':18,"gender":"male"}
    print(d.keys())>>>>>dict_keys(['name', 'age', 'gender'])
    print(d.values())>>>>dict_keys(['name', 'age', 'gender'])
    print(d.items())>>>>>dict_keys(['name', 'age', 'gender'])
    

    6、循环

    d={"name":"egon",'age':18,"gender":"male"}
    for k in d.keys():
        print(k)
    >>>>>name
    >>>>>age
    >>>>>gender
    
    for k in d:
        print(k)
    >>>>和d.key()相同
    
    for v in d.values():
        print(v)
    >>>>egon
    >>>>18
    >>>>male
    
    for k,v in d.items():  # k,v = ('gender', 'male'),
        print(k,v)
    >>>>>name egon
    >>>>>age 18
    >>>>>gender male
    

    转成列表格式

    print(list(d.keys()))
    print(list(d.values()))
    print(list(d.items()))
    

    7、d.get()

    d={"name":"egon",'age':18,"gender":"male"}
    print(d["xxx"])>>>>无 报错
    print(d.get("xxx"))>>>>无输出None
    

    需要掌握(****)

    d={"name":"egon",'age':18,"gender":"male"}
    d.clear()
    print(d)
    

    d.copy() # 浅copy

    d={"name":"egon",'age':18,"gender":"xxx"}
    key不存在则添加key:value,key如果存在则什么都不做
    if "gender" not in d:
        d['gender']="male"
    
    key不存在则添加key:value,key如果存在则什么都不做
    d.setdefault("gender","male")
    print(d)
    

    .update()更新

    d={"name":"egon",'age':18,"gender":"male"}
    d.update({"k1":111,"name":"xxx"})
    print(d)
    

    ==该类型总结

    存多个值

    无序

    可变

    d={'k1':111}
    print(id(d))
    d['k1']=2222222
    print(id(d))

  • 相关阅读:
    7月30日 举办专注于微服务的.NET Conf Focus
    我和ABP vNext 的故事
    Windows环境搞好的Dockerfile文件 在Linux上报错了
    [LeetCode] 955. Delete Columns to Make Sorted II 删除列使其有序之二
    [LeetCode] 954. Array of Doubled Pairs 两倍数对儿数组
    上周热点回顾(8.3-8.9)团队
    发布新版首页“外婆新家”升级版:全新的UI,熟悉的味道团队
    上周热点回顾(7.27-8.2)团队
    终于换新颜:新版网站首页发布上线团队
    上周热点回顾(7.20-7.26)团队
  • 原文地址:https://www.cnblogs.com/liuyang521/p/14180190.html
Copyright © 2011-2022 走看看