• 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
    
  • 相关阅读:
    无限维
    黎曼流形
    why we need virtual key word
    TOJ 4119 Split Equally
    TOJ 4003 Next Permutation
    TOJ 4002 Palindrome Generator
    TOJ 2749 Absent Substrings
    TOJ 2641 Gene
    TOJ 2861 Octal Fractions
    TOJ 4394 Rebuild Road
  • 原文地址:https://www.cnblogs.com/yding/p/12465551.html
Copyright © 2020-2023  润新知