• 学习笔记-Python基础6-列表元祖字典集合-列表、元祖


    list列表:一组有顺序的数据的组合

    l1 = [] #创建一个空列表
    print(type(l1),l1) #type内置函数,负责打印变量类型,输出:<class 'list'> []
    l2 = [1,2,3] #创建一个带值列表
    print(type(l2),l2) #type内置函数,负责打印变量类型,输出:<class 'list'> [1,2,3]
    l3 = list() #创建一个空列表的另外一种方法
    print(type(l3),l3) #type内置函数,负责打印变量类型,输出:<class 'list'> []
    #列表的常用操作:1、访问:用下标(索引)访问,其下标从0开始
    l = [1,2,3] print(l[2]) #输出:3
    #列表的常用操作:2、分片:列表[开始下标:结束下标],取的值不包含结束下标对应的值(list分片操作是生产了一个新的list
    l = [1,2,3]
    print(l[:]) #左右下标都不写,表示截取列表全部值,输出:[1, 2, 3]

    print(l[0:2]) #输出:[1, 2, 3]
    print(l[1:]) #输出:[2, 3]
    print(l[::2]) #输出:[1, 3],第三个参数为分片操作里控制每次增长的幅度

     print(l[:10]) #输出:[1, 2, 3],下标超出列表范围,超出部分忽略不考虑

     print(l[-3:2]) #输出:[1, 2],下标起始为负值,则按0开始

     #下标、增长幅度都可以为负值

     #下标为负数,表明列表内顺序按从右往左,开始的下标为-1(也就是数组的最后一个下标),然后-2,依次类推

     #分片默认左边的下标大于右边的下标,如果想改成右边大于左边,则需要把增长幅度改为负值,但需要注意截取出来的值的顺序是倒着排的(为list正反颠倒提供了方法:print(l[::-1]))

     print(l[-2:-3]) #输出:[]
     print(l[-2:-1]) #输出:[2]

     print(l[-1:-3:-1]) #输出:[3,2]

     内置函数id,负责显示一个变量或者数据的唯一确定编号,相当于这份数据在内存中的位置:

     #猜想如果a和b指向同一份数据,修改a的值就会同时修改b的值,但是显示结果并不是

      a = 100
      b = 200
      c = a
      print(id(a),id(c),id(b)) #输出:1506506912 1506506912 1506510112

      a = 101
      print(id(a),id(c)) #输出:1506506944 1506506912

      

      l = [1,2,3,4]
      ll = l[:]
      print(l,ll) #[1, 2, 3, 4] [1, 2, 3, 4]


      l[0] = 99
      print(l,ll) #[99, 2, 3, 4] [1, 2, 3, 4]


      lll = ll
      ll[0] = 33
      print(ll,lll) #[33, 2, 3, 4] [33, 2, 3, 4]

    #删除命令:del,下面例子列表中数值删除不会生成新的列表
    a = [1,2,3]
    print(a,id(a)) #[1, 2, 3] 84212168
    del a[2] print(a,id(a)) #[1, 2] 84212168

     del a
     print(a) #NameError: name 'a' is not defined,因为删除掉a后,再打印a,a就是未定义

     #列表想加

     a = [1,2,3]

     b = ["a", "b"]
     c= a + b
     print(c) #[1, 2, 3, 'a', 'b']

     #列表乘法 

     a = [1,2,3]

     print(a * 3) #[1, 2, 3, 1, 2, 3, 1, 2, 3],相当于把n个a列表想加

     b = 8
     print(b in a) #False,成员资格判断,b在不在a里面

     print(b not in a) #True

    #列表遍历
    a = [1, 2, 3, 4, 5]
    #for in 方法
    for i in a: # in后面跟的是可迭代的变量
        print(i)
    #while方法
    length = len(a)
    indx = 0
    while indx < length:
        print(a[indx])
        indx += 1
    a = [["one",1,""], ["two",2,""]]
    #双层列表,或者叫嵌套列表
    for i in a:
        for k in i:
            print(k) #one 
     1 
     我 
     two 
     2 
     萌
    for k,v,w in a:
        print(k,v,w) #one 1 我 
     two 2 萌,k,v,w个数应该跟解包出来的变量个数一致
    #c++,java写法
    a = [1, 2, 3, 4, 5]
    for i in range(0,len(a)):
        print(a[i])
        i += 1
    #列表内涵:list content
    #列表生成式
    a = [1, 2, 3, 4]
    b = [i for i in a] #用list a创建一个list b(把a里面的每个值拿出来,依次赋值给i)
    print(b) #[1, 2, 3, 4]
    b = [i * 10 for i in a] #list a中每个元素乘以10,放入新列表b
    print(b) #[10, 20, 30, 40]
    a = [x for x in range(1,35)]
    b = [m for m in a if m % 2 == 0]
    print(b) #[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34]
    
    a = [i for i in range(1,4)]
    b = [i for i in range(100,400) if i % 100 == 0]
    c = [m+n for m in a for n in b if m+n < 250] #列表生成嵌套,也可以添加条件表达式,此例为:m和每个n相加,只要结果大于250的
    print(c) #[101, 201, 102, 202, 103, 203]
    for m in a:
        for n in b:
            print(m+n,end=" ") #101 201 301 102 202 302 103 203 303 
    print()
    #列表常用函数
    #len(),求长度
    a = [i for i in range(1,100)]
    print(len(a)) #99
    #max(),求最大值
    b = ["aaa","b","cccc"]
    print(max(a),max(b)) #99 cccc
    
    #min(),求最小值
    print(min(a),min(b)) #1 aaa
    
    #list(),将其他格式数据转成list。注意要求被转换的数据为可迭代的
    a = "我 是 你"
    print(list(a)) #['我', ' ', '是', ' ', '你']
    print(list(range(1,4))) #[1, 2, 3]
    #列表操作方法
    #1、末尾追加
    a = [ i for i in range(1,5)] a.append(100) print(a) #2、插入(insert(index,data))在当前下标index的前面插入 a.insert(2,666) print(a) #3、pop(弹出最后一个值,一般同时进行赋值操作) last_ele = a.pop() print(last_ele) print(a) #4、del删除,可以删除整个列表,也可以删除指定下标的元素 del a[2] print(a) #5、remove,删除指定值的元素,最好再删除前先判断有没有这个值,或者是用try...excepty语句 print(id(a)) if 1 in a: a.remove(1) print(a) print(id(a)) #6、clear清空列表内的数据,但列表还在 a.clear() print(a) #针对于列表清空操作,如果不需要列表所在内存地址保持不变,可以使用a = list()或者a = []操作 #7、reverse()翻转,原地翻转 a = [i for i in range(1,4)] a.reverse() print(a) #8、extend,扩展列表,把一个列表直接拼接到一个列表上 a = [1, 2, 3] b = [4, 5] print(id(a)) a.extend(b) print(a) print(id(a)) #9、count()查找列表内指定值出现的次数 a = [1, 2, 1] a.append(1) a.insert(2,1) print(a) print(a.count(1)) print("*" * 10) #10、copy()浅拷贝,可以解决list在变量间赋值操作出现指向同一地址 a = [1, 2, 3] b = a.copy() print(b) #深拷贝和浅拷贝区别,比如嵌套列表,浅拷贝只拷贝一层 a = [1, 2, 3, [10, 20, 30]] b = a.copy() print(id(a),id(b)) print(id(a[3]),id(b[3])) '''
    输出的内容如下:
    [1, 2, 3, 4, 100] [1, 2, 666, 3, 4, 100] 100 [1, 2, 666, 3, 4] [1, 2, 3, 4] 80992712 [2, 3, 4] 80992712 [] [3, 2, 1] 81120008 [1, 2, 3, 4, 5] 81120008 [1, 2, 1, 1, 1] 4 ********** [1, 2, 3] 81112840 81112712 80992712 80992712 '''

    元祖tuple:可以看成是一个不可更改内部值的list

    #元祖
    t = ()
    print(type(t))
    #创建只有一个值的元祖的两种方法
    t = (1,)
    t = 1,
    #创建多个值的元祖的两种方法
    t = (1, 2, 3)
    t = 1, 2, 3
    #list转成tuple
    l = [1, 2, 3]
    t = tuple(l)
    print(t,type(t))
    #元祖特性
    #1、有序;2、元祖的数据可以访问,但不可修改;3、元祖数据可以是任意类型;总之,list拥有的特性,除了修改数据外,元祖都具有,也就是说list具有的操作,比如索引、切片、序列相加或乘、成员资格等,它都一模一样
    t = (1, 2, 3, 4, 5)
    #索引操作
    print(t[2])
    #元祖切片,切片下标可以超出范围,但索引不行,会报错
    t1 = t[1::2]
    print(t1,id(t1))
    print(t,id(t))
    print(t[::-1])
    #元祖相加
    t1 = (1, 2, 3)
    t2 = (4, 5, 6)
    print(id(t1))
    t1 = t1 + t2
    print(t1,id(t1))
    #元祖相乘
    t= (1, 2, 3)
    t = t * 3
    print(t)
    #成员检测
    t= (1, 2, 3)
    print(2 in t)
    #遍历,一般用fo1
    t = [1, 2, 3]
    for i in t:
        print(i, end=" ")
    print()
    #遍历,双层元祖遍历
    t = ((1,2,3),("a", "b", "c"))
    for k, v, n in t:
        print(k, "--", v, "--", n)
    '''
    <class 'tuple'>
    (1, 2, 3) <class 'tuple'>
    3
    (2, 4) 79007304
    (1, 2, 3, 4, 5) 80323952
    (5, 4, 3, 2, 1)
    80466352
    (1, 2, 3, 4, 5, 6) 55361448
    (1, 2, 3, 1, 2, 3, 1, 2, 3)
    True
    1 2 3 
    1 -- 2 -- 3
    a -- b -- c
    '''
    #一、python内置函数中适用于元祖的函数,基本和list通用
    #
    1、len()获取元祖长度 t = (1, 2, 3, 4, 5, 5, 1) print(len(t)) #2、max()、min()最大最小 print(max(t),min(t)) #3、tuple()创建或转换成元祖 l = [1, 2, 3] t = tuple(l) print(t) t = tuple() print(t) #二、元祖的方法,基本和list一样(不包含list可以修改值的方法) #1、count,计算指定值出现的次数 t = (1, 2, 3, 1, 1,) print(t.count(1)) #2、index,返回指定元素的索引,如果指定元素有多个值,则只返回第一个的索引 print(t.index(1)) #三、元祖变量交换法 #两个变量交换值 a = 1 b = 3 #java会这么写: c = a a = b #a交换结束 b = c print(a,b) #python这么写 a, b = b, a print(a,b) '''
    打印如下:
    7 5 1 (1, 2, 3) () 3 0 3 1 1 3 '''
  • 相关阅读:
    有效管理时间的十八种方法
    针对某个块下面的按钮注册点击事件
    vs2015运行项目时出现“编译器失败,错误代码为 1”的解决方案
    淘宝API调用 申请 获取session key
    中小型研发团队架构实践:生产环境诊断利器WinDbg帮你快速分析异常情况Dump文件
    中小型研发团队架构实践:如何规范公司所有应用分层?
    中小型研发团队架构实践:电商如何做企业总体架构?
    中小型研发团队架构实践:高效率、低风险,一键发布并测试的持续集成工具Jenkins
    ASP.NET全栈开发验证模块之在Vue中使用前端校验
    计算机基础存储结构
  • 原文地址:https://www.cnblogs.com/Cloudloong/p/9599999.html
Copyright © 2020-2023  润新知