zoukankan      html  css  js  c++  java
  • 列表操作

    列表是可变的序列,能够保存任何数据类型,用[]来表示列表。

    一、列表创建

    • 创建空列表
    a = []
    b = list()

    二、访问列表元素

    • 根据索引取元素(索引从0开始计数,-1表示最后一位)
    a = [1,2,3,4,5]
    print(a[0],a[2],a[-1])  #结果1,3,5  
    • 切片取元素(返回列表)
    >>>a = [1,2,3,4,5]
    >>>a[1:3]             #相当于取出a[1]到a[3]的值但不包括a[3],简单理解就是顾头不顾尾
    [2, 3]
    
    >>>a[0:2]             
    [1, 2]
    
    >>>a[:2]               #这里0可以省略,a[0:2]相当于a[:2]
    [1, 2]
    

       


    三、修改列表元素

    • 修改列表元素很简单,看代码
    a = [1,2,3,4,5]
    a[0] = 'test'
    print(a)  #结果:['test', 2, 3, 4, 5]

    四、列表中添加元素

    • 列表中添加元素有两种方法:

    1、在列表末尾插入元素:append()

    2、在列表中插入元素:insert()

    a = []
    a.append(1)
    a.append(2)
    print(a)   #结果:[1,2]
    a.insert(0,'测试') #在索引0处添加空间,并把'测试'存储到这个地方。这种操作将列表中的所有元素都右移一个位置
    print(a)  #结果:['测试', 1, 2] 

     五、列表中删除元素

    • 列表中删除元素4种方法:pop、clear、remove、del

    1、pop:L.pop([index]) -> item -- remove and return item at index (default last)

    a = [1,2,3,4]
    print(a.pop())  #不加索引号,删除最后一个元素
    print(a)
    print(a.pop(1)) #加索引号,删除索引号所在的位置
    print(a)
    结果:
    4
    [1, 2, 3]
    2
    [1, 3]

    2、clear:L.clear() -> None -- remove all items from L 

    a = [1,2,3,4]
    a.clear()    #清空列表中所有元素
    print(a)
    结果:
    []

    3、remove:L.remove(value) -> None -- remove first occurrence of value

    a = ['a','b',1,2]
    a.remove('a')  #根据值删除元素
    a.remove(1)
    print(a)
    结果:
    ['b', 2] 

    4、del

    a = ['a','b',1,2]
    del a[0]  #删除a[0]的值
    print(a)
    del a   #删除引用
    结果:
    ['b', 1, 2]
    

    结论:关于pop和del的一些心得,当你对删除的值还需要引用时,那么就用pop,如果不需要引用,那么可以用del。上面这个例子,del a后,如果此时你再打印a列表就会报错


    六、列表排序

    两种方法:sort和sorted

     

    >>>a = [2,1,3,5]
    >>>a.sort()          #列表中的排序方法
    >>>a
    [1, 2, 3, 5]
    >>>a.sort(reverse=True)  #从高到低排序
    >>>a
    [5, 3, 2, 1]
    
    >>>a = [2,1,3,5]
    >>>sorted(a)       #内置函数方法,排序完返回一个新列表
    [1, 2, 3, 5]     

    七、列表复制

    浅拷贝(2种方法):

    list = a[:]

    list = a.copy()

    深拷贝:

    首先定义个copy模块,import copy

    list = copy.deepcopy(a)


    八、列表生成式

    要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))

    >>> list(range(1, 11))
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

    但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环:

    >>> L = []
    >>> for x in range(1, 11):
    ...    L.append(x * x)
    ...
    >>> L
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

    但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:

    >>> [x * x for x in range(1, 11)]
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    

    写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。

    for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:

    >>> [x * x for x in range(1, 11) if x % 2 == 0]
    [4, 16, 36, 64, 100]
    >>>[x * x for x in range(2, 11,2)]    #也可以这么实现
    [4, 16, 36, 64, 100]

    九、列表中其它函数的用法

    1、count:计算字符出现的次数。L.count(value) -> integer -- return number of occurrences of value

    2、extend:列表后面添加元素,添加元素必须为可迭代对象。L.extend(iterable) -> None -- extend list by appending elements from the iterable

    3、index:返回元素在列表中第一次出现的位置,返回索引号。L.index(value, [start, [stop]]) -> integer -- return first index of value.

    4、reverse:列表翻转,L.reverse() -- reverse *IN PLACE* 

    >>a = [1,2,3,1,2,4]
    >>a.count(1)
    2
    >>a.extend(['a','b'])
    >>a
    [1, 2, 3, 1, 2, 4, 'a', 'b']
    >>a.index('a')
    6
    >>a.reverse()
    >>a
    ['b', 'a', 4, 2, 1, 3, 2, 1]
    

      

  • 相关阅读:
    js的基本数据类型有哪些?
    UML 类图
    三种代理模式
    jsp 知识点
    httpServlet
    Qt时间&日期
    Microsoft visual studio C 运行时库 在 xx.exe中检测到一个错误
    C++调用COM之错
    PCL中的bug修改
    Qt使用SQLite
  • 原文地址:https://www.cnblogs.com/zj-luxj/p/6791802.html
Copyright © 2011-2022 走看看