zoukankan      html  css  js  c++  java
  • day09-列表

    1、作用:按位置存放多个值
    2、定义
    l=[1,1.2,'a'] # l=list([1,1.2,'a'])
    print(type(l))
    
    <class 'list'>
    3、类型转换: 但凡能够被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']

    4、内置方法
    优先掌握的操作:
    1、按索引存取值(正向存取+反向存取):即可以取也可以改

    l=[111,'egon','hello']
    # 正向取
    print(l[0])
    
    111
    # 反向取
    print(l[-1])
    
    hello
    # 可以取也可以改:索引存在则修改对应的值
    l[0]=222
    print(l)
    
    [222, 'egon', 'hello']
    # 无论是取值操作还是赋值操作:索引不存在则报错
    l[3]=333
    
    IndexError: list assignment index out of range

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

    l = [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
    print(l[0:3])   # 取出前三个
    print(l[0:5:2]) # 0 2 4  取出前五个,间隔2个一取
    
    # [111, 'egon', 'hello']
    # [111, 'hello', 'b']
    
    print(l[0:len(l)])
    print(l[:])      # 这两种方式都是从头取到尾,不写默认就是从头到尾
    new_l=l[:] # 切片等同于拷贝行为,而且相当于浅copy
    print(id(l))
    print(id(new_l))       # 这两名证明,是浅拷贝,是新内存地址
    
    # [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
    # [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
    # 1827082637376
    # 1827083322752
    
    l[-1][0]=1111111     # 给最一个的第一个元素赋值
    print(l)             # 打印验证,已经赋值成功
    print(new_l)         # 引用的也跟着改变了
    print(l[::-1])       # 反向打印
    
    # [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1111111, 2, 3]]
    # [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1111111, 2, 3]]
    # [[1111111, 2, 3], 'd', 'c', 'b', 'a', 'hello', 'egon', 111]
    msg1='hello:egon:<>:18[]==123'
    msg2=msg1[:]
    print(msg1,id(msg1))
    print(msg2,id(msg2))     # 验证一下什么都不写默认从头到尾取
    
    # hello:egon:<>:18[]==123 2295708326128
    # hello:egon:<>:18[]==123 2295708326128

    3、长度

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

    4、成员运算in和not in

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

    5、往列表中添加值

    5.1 追加

    l=[111,'egon','hello']
    l.append(3333)
    l.append(4444)
    print(l)     # 在最后面追加
    # [111, 'egon', 'hello', 3333, 4444]

    5.2、插入值

    l=[111,'egon','hello']
    l.insert(0,'alex')   # 指定索引位置插入,余下的往后移动
    print(l)
    
    ['alex', 111, 'egon', 'hello']

    5.3、extend添加值

    new_l=[1,2,3]
    l=[111,'egon','hello']
    # l.append(new_l)
    print(l)       # 基础办法实现
    
    # [111, 'egon', 'hello', [1, 2, 3]]
    
    # 代码实现
    for item in new_l:
        l.append(item)
    print(l)
    
    # [111, 'egon', 'hello', 1, 2, 3]
    
    # extend实现了上述代码    extend就是用来实现把列表这种拆开,再分别追加进行的功能的新方法
    l.extend(new_l)
    l.extend('abc')
    print(l)
    
    # [111, 'egon', 'hello', 1, 2, 3, 1, 2, 3, 'a', 'b', 'c']

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

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

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

    l = [111, 'egon', 'hello']
    l.pop() # 不指定索引默认删除最后一个
    l.pop()
    print(l)
    
    [111]
    l = [1,2,3]
    res=l.pop(1)   #pop有返回值,就是删除掉的内容
    print(l)
    print(res)
    
    [1, 3]
    2

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

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

    8、循环

    l=[1,'aaa','bbb']
    for x in l:
    l.pop(1)
    print(x)



    9、需要掌握操作:

    l = [1, 'aaa', 'bbb','aaa','aaa']
    # 1、l.count()  统计查找到的次数
    print(l.count('aaa'))
    # 3
    
    # 2、l.index()
    print(l.index('aaa'))
    # 1
    # print(l.index('aaaaaaaaa')) # 找不到报错
    
    # 3、l.clear()
    l.clear()   # 清楚内容
    print(l)
    # []
    
    # 4、l.reverse():不是排序,就是将列表倒过来
    l = [1, 'egon','alex','lxx']
    l.reverse()
    print(l)
    ['lxx', 'alex', 'egon', 1]
    
    # 5、l.sort(): 列表内元素必须是同种类型才可以排序
    l=[11,-3,9,2,3.1]
    l.sort() # 默认从小到大排,称之为升序
    print(l)
    l.sort(reverse=True) # 如果不写的话默认是False,也就是升序排列,改为True,则从大到小排,设置为降序
    # print(l)
    # [-3, 2, 3.1, 9, 11]
    # [11, 9, 3.1, 2, -3]
    l=[11,'a',12]   # 不是同一种类型,不能排列
    l.sort()
    # TypeError: '<' not supported between instances of 'str' and 'int'
    l=['c','e','a']   # 同一类,字符串也可比较
    l.sort()
    print(l)
    ['a', 'c', 'e']

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

    print('a'>'b')
    print('abz'>'abcdefg')
    
    False
    True

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

    l1=[1,'abc','zaa']
    l2=[1,'abc','zb']
    
    print(l1 < l2)
    True

    补充知识点

    # 1、队列:FIFO,先进先出
    l=[]
    # 入队操作
    l.append('first')
    l.append('second')
    l.append('third')
    
    print(l)
    # 出队操作
    print(l.pop(0))
    print(l.pop(0))
    print(l.pop(0))
    
    ['first', 'second', 'third']
    first
    second
    third
    # 2、堆栈:LIFO,后进先出
    l=[]
    # 入栈操作
    l.append('first')
    l.append('second')
    l.append('third')
    
    print(l)
    # 出队操作
    print(l.pop())
    print(l.pop())
    print(l.pop())
    
    ['first', 'second', 'third']
    third
    second
    first
  • 相关阅读:
    autocomplete自动完成搜索提示仿google提示效果
    实现子元素相对于父元素左右居中
    javascript 事件知识集锦
    让 IE9 以下的浏览器支持 Media Queries
    「2013124」Cadence ic5141 installation on CentOS 5.5 x86_64 (limited to personal use)
    「2013420」SciPy, Numerical Python, matplotlib, Enthought Canopy Express
    「2013324」ClipSync, Youdao Note, GNote
    「2013124」XDMCP Configuration for Remote Access to Linux Desktop
    「2013115」Pomodoro, Convert Multiple CD ISO to One DVD ISO HowTo.
    「2013123」CentOS 5.5 x86_64 Installation and Configuration (for Univ. Labs)
  • 原文地址:https://www.cnblogs.com/xiao-zang/p/12462959.html
Copyright © 2011-2022 走看看