zoukankan      html  css  js  c++  java
  • 基本数据类型之列表介绍

    数据类型之列表介绍

    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)
    s = "hello"
    l = []
    for i in s:
        l.append(i)
    print(l)
    

    转化的方法为通过for循环遍历添加

    4、内置方法

    优先掌握的操作:

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

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

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

    l = [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
    print(l[0:3])
    # [111, 'egon', 'hello']
    print(l[0:5:2]) # 取索引为0 2 4的值
    # [111, 'hello', 'b']
    
    print(l[0:len(l)])
    # [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
    print(l[:])
    # [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
    new_l=l[:] # 切片等同于拷贝行为,而且相当于浅copy
    print(id(l))
    # 2277356332168
    print(id(new_l))
    # 2277356332936
    
    l[-1][0]=1111111		# 修改原列表,验证切片与浅拷贝类似
    print(l)
    # [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1111111, 2, 3]]
    print(new_l)
    # [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1111111, 2, 3]]
    print(l[::-1])
    # [[1111111, 2, 3], 'd', 'c', 'b', 'a', 'hello', 'egon', 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 追加

    在列表尾部添加数据

    l=[111,'egon','hello']
    l.append(3333)
    l.append(4444)
    print(l)
    # 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添加值

    extend可以将新列表内的数据添加到原列表

    如果我们想将一个新的列表内的数据添加到原列表,使用append无法实现,如下列代码

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

    我们可以使用extend方法

    new_l = [1, 2, 3]
    l = [111, 'egon', 'hello']
    for item in new_l:
        l.append(item)
    print(l)
    # [111, 'egon', 'hello', 1, 2, 3]
    # 实现了功能
    l.extend('abc')
    print(l)
    # [111, 'egon', 'hello', 1, 2, 3, 'a', 'b', 'c']
    

    6、删除

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

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

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

    不输入索引时默认删除最后一个数据

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

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

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

    7、循环与列表

    不要在循环中对列表进行删除操作!!!!

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

    需要掌握操作

    l = [1, 'aaa', 'bbb','aaa','aaa']

    1、l.count()

    数输入内容在列表中出现的次数

    print(l.count('aaa'))
    

    2、l.index()

    查找方法,查找输入内容第一次出现的位置的索引

    print(l.index('aaa'))
    print(l.index('aaaaaaaaa')) # 找不到报错
    

    3、l.clear()

    清空列表

    l.clear()
    print(l)
    

    4、l.reverse():

    注意: reverse不是排序后翻转,是将列表直接倒过来

    l = [1, 'egon','alex','lxx']
    l.reverse()
    print(l)
    

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

    l=[11,-3,9,2,3.1]
    l.sort() # 默认从小到大排,称之为升序
    l.sort(reverse=True) # 从大到小排,设置为降序
    print(l)
    
    l=[11,'a',12]  # 不同类型报错!
    l.sort()
    
    l=['c','e','a']		# 按ascii码排序,A<a
    l.sort()
    print(l)
    

    了解:字符串可以比大小,按照对应的位置的字符依次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('first')
    l.append('second')
    l.append('third')
    print(l)
    # ['first', 'second', 'third']
    
    
    # 出队操作
    
    print(l.pop(0))
    # first
    
    print(l.pop(0))
    # second
    
    print(l.pop(0))
    # third
    

    2、堆栈:LIFO,后进先出

    l=[]
    
    # 入栈操作
    
    l.append('first')
    l.append('second')
    l.append('third')
    print(l)
    # ['first', 'second', 'third']
    
    # 出队操作
    
    print(l.pop())
    # third
    
    print(l.pop())
    # second
    
    print(l.pop())
    # first
    
  • 相关阅读:
    gitlab + gitlab-runner 实现项目的自动化部署测试环境与打包
    docker 部署 zookeeper 集群
    CSS 使用id属性的规则
    SimpleXML使用详解
    PHP通用分页类
    MYSQL远程连接速度慢的解决方法
    远程连接mysql出现1045错误的解决办法
    Bootstrap 元素居中设置
    PHP 时间戳
    html代码/如何做到有横线无竖线的表格/或横线有颜色/竖线没颜色
  • 原文地址:https://www.cnblogs.com/achai222/p/12465320.html
Copyright © 2011-2022 走看看