zoukankan      html  css  js  c++  java
  • Python学习————列表类型

    一、作用:用来存多个值,并且索引的值为对应的值,按位置存放多个值

    二、定义

    l = [1, 1.2, 'yan', [21, 99]]
    

    三、类型转化

    但凡能够被for循环遍历的类型都可以当做参数传给list()转成列表

    res=list('hello')
    print(res)
    
    ['h', 'e', 'l', 'l', 'o']
    
    res=list({'k1':111,'k2':222,'k3':3333})
    print(res)
    
    ['k1', 'k2', 'k3']
    

    四、内置方法

    1、按索引存取值(正向存取+反向存取):即可以取也可以改

    正向取:
    l = [111, 'egon', 'hello']
    print(l[0])
    
    111
    
    反向取:
    l = [111, 'egon', 'hello']
    print(l[-1])
    
    hello
    
    可以取也可以改:索引存在则修改对应的值
    l = [111, 'egon', 'hello']
    l[0]=222 # 将列表的第一个值改为222
    print(l)
    
    [222, 'egon', 'hello']
    
    无论是取值操作还是赋值操作:索引不存在则报错

    2、切片(顾头不顾尾,步长)

    l = [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
    print(l[0:3])
    print(l[0:5:2]) 
    print(l[0:len(l)])
    print(l[:])
    
    [111, 'egon', 'hello']
    [111, 'hello', 'b']
    [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
    [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
    
    new_l=l[:] # 切片等同于拷贝行为,而且相当于浅copy
    
    msg1='hello:egon:<>:18[]==123'
    msg2=msg1[:]
    print(msg1,id(msg1))
    print(msg2,id(msg2))
    
    hello:egon:<>:18[]==123 2473211243232  # id 地址相同
    hello:egon:<>:18[]==123 2473211243232
    

    3、长度(len())

    print(len([1, 2, 3])) # 判断字符长度
    
    3    # 长度为3
    

    4、成员运算in和not in

    in : 判断字符是否在大字符串中
    print('aaa' in ['aaa', 1, 2])  # True     
    print(1 in ['aaa', 1, 2])  # True
    
    not in :判断字符是否不在大字符串中
    print(3 not in ['aaa', 1, 2]) # True
    print(not 3 in ['aaa', 1, 2]) # True   # 能够使用 但不推荐 使用 not.....in....
    

    5、往列表中添加值

    5.1 追加 (.append())

    从后往前加

    l = [111, 'egon', 'hello']
    l.append(3333)  # 将 3333 添加到列表l中 从后往前加
    l.append(4444)  # 将 4444 添加到列表l中 从后往前加
    print(l)
    
    [111, 'egon', 'hello', 3333, 4444]
    
    new_l=[1,2,3]
    l=[111,'egon','hello']
    l.append(new_l) # 将 new_l的值添加到 l 中
    print(l)
    
    [111, 'egon', 'hello', [1, 2, 3]]
    
    5.2 插入值 (.insert())

    根据位置插入

    l = [111, 'egon', 'hello']
    l.insert(0, 'alex') # 将 alex 插入列表 0 号位置
    print(l)
    
    ['alex', 111, 'egon', 'hello']
    
    5.3 extend添加值
    l = [111, 'egon', 'hello']
    new_l=[1,2,3]
    l.extend(new_l)  将 列表 new_l 添加到列表l中 从后往前加
    print(l)
    
    [111, 'egon', 'hello', 1, 2, 3]
    

    6、删除

    方式一:通用的删除方法,只是单纯的删除、没有返回值

    l = [111, 'egon', 'hello']
    del l[1]
    			# x = del l[1] # 抛出异常,不支持赋值语法
    print(l)
    
    [111, 'hello']
    

    方式二:.pop()根据索引删除,会返回删除的值

    l = [111, 'egon', 'hello']
    l.pop() # 不指定索引默认删除最后一个
    l.pop(0) # 删除 第一个
    print(l)
    
    [111, 'egon']
    ['egon', 'hello']
    

    方式三:.remove()根据元素删除,返回None

    l = [111, 'egon', [1, 2, 3], 'hello']
    l.remove([1, 2, 3])
    print(l)
    
    [111, 'egon', 'hello']
    
    l = [111, 'egon', [1, 2, 3], 'hello']
    res = l.remove('egon')
    print(res)  # None
    print(l)
    
    None
    [111, [1, 2, 3], 'hello']
    
    7、循环
    l = [1, 'aaa', 'bbb']
    for x in l:
        l.pop(1)
        print(x)
    
    1
    bbb
    

    五、需要掌握的操作

    1. .count() 统计某个元素在列表中出现的次数
      l = [1, 'aaa', 'bbb','aaa','aaa']
      print(l.count('aaa'))
      
      3    # aaa  在列表 l 中出现3次
      
    2. .index() 打印某个元素的索引(如果找不到就会报错)
      l = [1, 'aaa', 'bbb','aaa','aaa']
      print(l.index('aaa'))
      print(l.index('aaaaaaaaa')) # 找不到报错
      
      1
      ValueError: 'aaaaaaaaa' is not in list  # 报错信息 
      
    3. .clear() 清空列表
      l = [1, 'aaa', 'bbb','aaa','aaa']
      l.clear()
      print(l)
      
      []   # 列表 l 被clear 清空
      
    4. .reverse() 将列表倒过来(不是排序)
      l = [1, 'egon','alex','lxx']
      l.reverse()
      print(l)
      
      ['lxx', 'alex', 'egon', 1]   # reverse 将列表 l 倒过来
      
    5. .sort() 列表内元素必须是同种类型才可以排序
      l = [11, -3, 9, 2, 3.1]
      l.sort()  # 默认从小到大排,称之为升序
      l.sort(reverse=True)  # 从大到小排,设置为降序
      print(l)
      
      [-3, 2, 3.1, 9, 11]
      [11, 9, 3.1, 2, -3] #.sort(reverse=True)   
      

    了解:字符串可以比大小,按照对应的位置的字符依次pk
    字符串的大小是按照ASCI码表的先后顺序加以区别,表中排在后面的字符大于前面的

    print('a'>'b')	 # False  b>a   z>a 
    print('abz'>'abcdefg') # 比较首个字符 如果相同比较一下个字符  大小与字符串长度无关
    
    False
    True
    

    了解:列表也可以比大小,原理同字符串一样,但是对应位置的元素必须是同种类型

    l1 = [1, 'abc', 'zaa'] # l1 < l2  比较第一个值  abc 大小相同比较第二个值 
    l2 = [1, 'abc', 'zb'] # l1 'zaa' l2 'zb' 首个字符相同  比较第二个字符 a < b 所以 l2 >l1
    print(l1 < l2)
    
    True		
    

    六、补充

    1、队列:FIFO,先进先出

    入队操作

    l = []
    l.append('first')
    l.append('second')
    l.append('third')
    print(l)
    
    ['first', 'second', 'third']
    

    出队操作

    l = ['first', 'second', 'third']
    print(l.pop(0))
    print(l.pop(0))
    print(l.pop(0))
    
    first
    second
    third
    
    2、堆栈:LIFO,后进先出

    入栈操作

    l = []
    l.append('first')
    l.append('second')
    l.append('third')
    print(l)
    
    ['first', 'second', 'third']
    

    出队操作

    l = ['first', 'second', 'third']
    print(l.pop())
    print(l.pop())
    print(l.pop())
    
    third
    second
    first
    
  • 相关阅读:
    ActiveMQ的spring配置文件
    ActiveMQ consumer按顺序处理消息
    ActiveMQ异步分发消息
    2个线程顺序工作
    hadoop更换硬盘
    linux内存条排查
    gitlab迁移升级
    linux 监控网卡实时流量iftop
    gitlab7.2安装
    为首次部署MongoDB做好准备:容量计划和监控
  • 原文地址:https://www.cnblogs.com/x945669/p/12464864.html
Copyright © 2011-2022 走看看