zoukankan      html  css  js  c++  java
  • Python入门day09——基本数据类型之列表、元组

    基本数据类型之列表、元组

    • 作用:按位置存放多个值
    • 定义
      l=[1,1.2,'a'] # l=list([1,1.2,'a'])
      print(type(l)) # <type 'list'>
      
    • 类型转换: 但凡能够被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,'yu','555']
      # 正向取
      print(l[0]) # 111
      # 反向取
      print(l[-1]) # 555
      # 可以取也可以改:索引存在则修改对应的值
      l[0]=222
      print(l) # [222,'yu','555']
      
      # 无论是取值操作还是赋值操作:索引不存在则报错
      l[3]=333 # 报错
      

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

      l = [1,2,3,4,5,6]
      res = l[2:6:2] # 从索引2开始取值到索引5(6-1),步长为2
      print(res) # [3,5]
      
      l = [111, 'yu', 'hello', 'a', 'b', 'c', [1, 2, 3]]
      print(l[0:len(l)]) # [111, 'yu', 'hello', 'a', 'b', 'c', [1, 2, 3]]
      new_l=l[:] # 切片等同于拷贝行为,而且相当于浅copy
      print(id(l)) # 1560670386048
      print(id(new_l)) # 1560670365312
      
      l = [111, 'yu', 'hello', 'a', 'b', 'c', [1, 2, 3]]
      l[-1][0]=111
      print(l) # [111, 'yu', 'hello', 'a', 'b', 'c', [111, 2, 3]]
      print(new_l) # [111, 'yu', 'hello', 'a', 'b', 'c', [111, 2, 3]]
      
      l = [111, 'yu', 'hello', 'a', 'b', 'c', [1, 2, 3]]
      print(l[::-1]) # [[111, 2, 3], 'c', 'b', 'a', 'hello', 'yu', 111]
      

      3、长度

      print(len([1, 2, 3])) # 3
      

      4、成员运算in和not in

      print('aaa' in ['aaa', 1, 2]) # True
      print(1 in ['aaa', 1, 2]) #  True
      

      5、往列表中添加值

      5.1 追加append

      l=[111,'egon','hello']
      l.append(2)
      l.append(3)
      print(l) # [111,'egon','hello',2,3]
      

      5.2、插入值insert

      l = ['yu',18,'hobby']
      l.insert(0,11)
      print(l) # [11,'yu',18,'hobby']
      

      5.3、extend添加值

      l=[1,2,3]
      l1=[111,222,333]
      l.append(l1)
      print(l) # [1, 2, 3, [111,222,333]]
      
      # 代码实现
      l=[1,2,3]
      l1=[111,222,333]
      for item in l1:
          l.append(item)
      print(l) # [1, 2, 3, 111, 222, 333]
      
      # extend实现了上述代码
      l=[1,2,3]
      l1=[111,222,333]
      l.extend(l1)
      print(l) # [1, 2, 3, 111, 222, 333]
      l.extend('abc')
      print(l) # [1, 2, 3, 111, 222, 333, 'a', 'b', 'c']
      

      6、删除

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

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

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

      l = [111, 'yu', 'age']
      l.pop() # 不指定索引默认删除最后一个
      l.pop() 
      print(l) # [111]
      
      l = [111, 'yu', 'age']
      res=l.pop(1)
      print(l) # [111,'age']
      print(res) # yu
      

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

      l = [111, 'yu', [1,2,3],'age']
      l.remove([1,2,3])
      print(l) # [111, 'yu', 'age']
      res=l.remove('yu')
      print(res) # None
      

      7、循环

      l=[1,'aaa','bbb']
      for x in l:
          print(x)
      
      1
      aaa
      bbb
      
      需要掌握操作:

      1、l.count():查找数据在列表中的个数

      l = [1, 'aaa', 'bbb','aaa','aaa']
      print(l.count('aaa')) # 3
      

      2、l.index():查找数据在列表中第一个相同元素的索引位置

      l = [1, 'aaa', 'bbb','aaa','aaa']
      print(l.index('aaa')) # 1
      print(l.index('aaaaaaaaa')) # 找不到报错
      

      3、l.clear():清空列表

      l = [1, 'aaa', 'bbb','aaa','aaa']
      l.clear()
      print(l) # []
      

      4、l.reverse():不是排序,就是将列表倒过来

      l = [1, 'yu','age']
      l.reverse()
      print(l) # ['age', 'yu', 1]
      

      5、l.sort(): 列表内元素必须是同种类型才可以排序

      l=[11,-3,9,2,3.1]
      l.sort() # 默认从小到大排,称之为升序
      print(l) # [-3, 2, 3.1, 9, 11]
      l.sort(reverse=True) # 从大到小排,设置为降序
      print(l) # [11, 9, 3.1, 2, -3]
      
      l=[11,'a',12]
      l.sort() # 报错
      
      l=['c','e','a']
      l.sort()
      print(l) # ['a', 'c', 'e']
      
    • 了解:字符串可以比大小,按照对应的位置的字符依次pk
    # 字符串的大小是按照ASCI码表的先后顺序加以区别,表中排在后面的字符大于前面的
    
    print('a'>'b') # False
    print('abz'>'abcdefg') # True
    
    # 列表也可以比大小,原理同字符串一样,但是对应位置的元素必须是同种类型
    l1=[1,'abc','zaa']
    l2=[1,'abc','zb']
    #
    print(l1 < l2) # True
    
    • 补充
    1、队列:FIFO,先进先出
    
    l=[]
    
    入队操作
    
    l.append('1')
    l.append('2')
    l.append('3')
    
    print(l) # [1,2,3]
    
    出队操作
    
    print(l.pop(0)) # 1
    print(l.pop(0)) # 2
    print(l.pop(0)) # 3
    
    2、堆栈:LIFO,后进先出
    
    l=[]
    
    入栈操作
    
    l.append('1')
    l.append('2')
    l.append('3')
    
    print(l) # [1,2,3]
    
    出栈操作
    
    print(l.pop()) # 3
    print(l.pop()) # 2
    print(l.pop()) # 3
    

    基本数据类型之元组

    1、作用:按照索引/位置存放多个值,只用于读不用于改
    2、定义:()内用逗号分隔开多个任意类型的元素,元组就是"一个不可变的列表"
    t=(1,1.3,'aa') # t=tuple((1,1.3,'aa'))
    print(t,type(t)) # (1, 1.3, 'aa') <class 'tuple'>
    
    x=(10) # 单独一个括号代表包含的意思
    print(x,type(x)) # 10 <class 'int'>
    
    t=(10,) # 如果元组中只有一个元素,必须加逗号
    print(t,type(t)) # (10,) <class 'tuple'>
    
    t=(1,1.3,'aa') # t=(0->值1的内存地址,1->值1.3的内存地址,2->值'aaa'的内存地址,)
    t[0]=11111 # 报错
    
    t=(1,[11,22]) # t=(0->值1的内存地址,1->值[1,2]的内存地址,)
    print(id(t[0]),id(t[1])) # 140733210941088 2039208687552
    t[0]=111111111 # 不能改
    print(t) # 报错
    t[1]=222222222 # 不能改
    print(t) # 报错
    t[1][0]=11111111111111111
    print(t) # (1, [11111111111111111, 22])
    print(id(t[0]),id(t[1])) # 140733210941088 2039208687552
    
    3、类型转换
    print(tuple('hello')) # ('h', 'e', 'l', 'l', 'o')
    print(tuple([1,2,3])) # (1, 2, 3)
    print(tuple({'a1':111,'a2':333})) # ('a1', 'a2')
    
    4、内置方法
    优先掌握的操作:

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

    t=('aa','bbb','cc')
    print(t[0]) # aa
    print(t[-1]) # cc
    

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

    t=('aa','bbb','cc','dd','eee')
    print(t[0:3]) # ('aa','bbb','cc')
    print(t[::-1]) # ('eee', 'dd', 'cc', 'bbb', 'aa')
    

    3、长度

    t=('aa','bbb','cc','dd','eee')
    print(len(t)) # 5
    

    4、成员运算in和not in

    t=('aa','bbb','cc','dd','eee')
    print('aa' in t) # True
    print('aa' not in t) # False
    

    5、循环

    t=('aa','bbb','cc','dd','eee')
    for x in t:
        print(x)
        
    aa
    bbb
    cc
    dd
    eee
    

    6、查询

    t=(2,3,111,111,111,111)
    print(t.index(111)) # 2
    print(t.index(1111111111)) # 报错
    print(t.count(111)) # 4
    
  • 相关阅读:
    JS能跑起来的贪吃蛇!(Bug多多 求指点。。)
    js随机生成闪烁div效果
    对js面向对象(原型对象 函数 和对象的关系)的理解
    后端——框架——视图层框架——spring_mvc——《官网》阅读笔记——第一章节41(mvc配置,WebMvcConfigurer)
    后端——框架——视图层框架——spring_mvc——《官网》阅读笔记——第一章节42(Http/2)——待补充
    后端——框架——视图层框架——spring_mvc——《官网》阅读笔记——第一章节43()——待补充
    后端——框架——视图层框架——spring_mvc——《官网》阅读笔记——第二章节1(RestTemplate)——待补充
    后端——框架——视图层框架——spring_mvc——《官网》阅读笔记——第二章节2(WebClient)——待补充
    后端——框架——视图层框架——spring_mvc——《官网》阅读笔记——第三章节(测试框架)——待补充
    后端——框架——容器框架——spring_boot——《官网》阅读笔记——初篇——待补充
  • 原文地址:https://www.cnblogs.com/yding/p/12465551.html
Copyright © 2011-2022 走看看