• [[4], [5, 6, 7]](Python)list的方法


    现在我们要学习一些Python的数据结构了,本节将主要学习列表(list)的用法


    1.list的方法


    list.append(x) 在list的末尾添加一个元素

    >>> a=[1,2,3,4]
    >>> a.append('a')
    >>> a
    [1, 2, 3, 4, 'a']

    list.extend(L) 在list的末尾添加列表L的所有元素

    >>> a=[1,2,3,4]
    >>> L=['a','b','c']
    >>> a.extend(L)
    >>> a
    [1, 2, 3, 4, 'a', 'b', 'c']

    list.pop([i]) 删除list索引为i-1的元素,并且返回删除的元素,如果i未指定,则删除列表最后一个元素

    >>> a=[1,2,3,4]
    >>> a.pop()
    4
    >>> a
    [1, 2, 3]

    >>> b=[1,2,3,4]
    >>> b.pop(2)
    3
    >>> b
    [1, 2, 4]

    list.remove(x) 删除list中值为x的元素,如果list中找不到该元素,则会引发一个错误

    >>> a=['a','b','c','d']
    >>> a.remove('b')
    >>> a
    ['a', 'c', 'd']
    >>> a.remove(9)

    Traceback (most recent call last):
    File "<pyshell#24>", line 1, in <module>
    a.remove(9)
    ValueError: list.remove(x): x not in list

    list.index(x) 返回list中值为x的元素索引,如果list中找不到该元素,则会引发一个错误

    >>> a=['a','b','c','d']
    >>> a.index('c')
    2
    >>> a.index(2)

    Traceback (most recent call last):
    File "<pyshell#27>", line 1, in <module>
    a.index(2)
    ValueError: 2 is not in list

    list.count(x) 统计并返回list中值为x的元素个数

    >>> a=[1,2,3,1,2,3,1]
    >>> a.count(1)
    3
    >>> a.count(3)
    2

    >>> a.count('a')

    0

     list.insert(i,x) 在索引位置i处插入一个元素x,当i大于列表的个数,将在列表的末尾插入元素x

    >>> a=[1,2,3,4,5,6]
    >>> a.insert(2,'a')
    >>> a
    [1, 2, 'a', 3, 4, 5, 6]

    >>>a.insert(10,'a')
    >>> a
    [1, 2, 'a', 3, 4, 5, 6, 'a']

    list.sort(cmp=Nonekey=Nonereverse=False) 对list进行重新排序,默认是按从小到大的顺序排序(参数是可选的,我们将在之后学习参数的用法)

    >>> a=[2,1,3,0,7,6,8]
    >>> a.sort()
    >>> a
    [0, 1, 2, 3, 6, 7, 8]

    list.reverse() 对list进行反向

    >>> a=[2,3,4,1,2,0]

    >>> a.reverse()
    >>> a
    [0, 2, 1, 4, 3, 2]


    2.list 切片


    引用列表的元素可以使用索引,每个列表的索引从左到右(正向)是从0开始,从右到左(反向)是从-1开始。例如,a=[1,2,3,4,5,6] a的正向和反向索引如下图所示:

     

    a[0]=1

    a[-1]=6

    a[-6]=1

    a[1]=2

      

    list 可以通过list[x:y]的形式来获取列表list从索引x到y(不包含y)的子集。

     >>> a=[1,2,3,4,5,6]
    >>> a[0:2]
    [1, 2]
    >>> a[:]
    [1, 2, 3, 4, 5, 6]
    >>> a[0:]
    [1, 2, 3, 4, 5, 6]
    >>> a[:3]
    [1, 2, 3]
    >>> a[-1:-4]
    []

    如果a[x:y]索引y处的元素在索引x处元素的左边,那么将返回一个空列表,如:a[4:-6]=[]

    >>> a=[1,2,3,4,5,6]

    >>> a[4:-6]
    []
    >>> a[5:3]
    []

     

    字符串也可以当成一个特殊的列表,如:str=‘python’,我们也可以用切片来截取子字符串:str[2:4]='th'

    >>> str='python'
    >>> str[2:4]
    'th'

    注:针对字符串,我们还可以使用加法来为切片获取的子字符串,增加另一个子字符串

    >>> str='python'
    >>> 'py'+str[2:4]+'on'
    'python'
    >>> str[:]+'is good'
    'pythonis good'


    3.嵌套列表


    有时候列表的元素也可能是一个列表,这样就构成了嵌套列表,假如,a=[[1,2,3,4],1,2,3,4] ,a列表的第3个元素是一个子列表

    我们可以通过list[x][y]来获取子列表中的元素:

    >>> a=[1,2,['a','b','c','d'],3,4]
    >>> a[2][2]
    'c'
    >>> a[2][-1]
    'd'


    4. x for x in list 语句的用法


    我们有时候可能需要遍历列表的元素,那么我们可以利用for x in list的形式来实现:

    >>> a=[1,2,3,4,5]
    >>> for x in a:
    print x

    1
    2
    3
    4
    5

     我们有时可能想要对列表的每个元素进行处理,例如,我们想对列表的每个元素都加1:

    >>> a=[1,2,3,4,5]
    >>> [x+1 for x in a]
    [2, 3, 4, 5, 6]

     

    如果我们的列表包含了嵌套列表,我们也可以使用这个语句,例如:a=[[1,2,3],[4,5,6],[7,8,9]] ,我们想使子列表中的每个元素都加1:

    >>> a=[[1,2,3],[4,5,6],[7,8,9]]
    >>> [[sublist[i]+1 for i in range(3) ] for sublist in a]
    [[2, 3, 4], [5, 6, 7], [8, 9, 10]]
    >>>

     

    假如我们想像二维数组那样倒置数组,即,我想将 a=[[1,2,3],[4,5,6],[7,8,9]]  变成[[1,4,7],[2,5,8],[3,6,9]],我们可以这样做:

    >>> a=[[1,2,3],[4,5,6],[7,8,9]]
    >>> [[ sublist[i] for sublist in a] for i in range(3)]
    [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

     

    上面的代码我们还可以用下面的代码替换:

    >>> x=[[],[],[]]
    >>> a=[[1,2,3],[4,5,6],[7,8,9]]
    >>> for i in range(3):
                      for sublist in a:
                              x[i].append(sublist[i])


    >>> x
    [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

     

    将列表中所有大于2的元素+1,如把[[1,2,3],[4,5,6]]变成[[4], [5, 6, 7]]

     

    list2=[[1,2,3],[4,5,6]]
    print [[sublist[i]+1 for i in range(3) if sublist[i]>2] for sublist in list2 ]
    

     

      

     

     

  • 相关阅读:
    微信开发 之 开启开发模式
    微信公众号开发 之 编辑模式使用
    分析各种Android设备屏幕分辨率与适配
    【面向对象设计模式】 适配器模式 (二)
    重构 之 总结代码的坏味道 Bad Smell (一) 重复代码 过长函数 过大的类 过长参数列 发散式变化 霰弹式修改
    【Android 应用开发】Android资源文件
    java 创建并写入文件
    隐藏 HttpClient 在console的日志
    HOW TO CHANGE THE DEFAULT KEY-VALUE SEPARATOR OF A MAPREDUCE JOB
    java 时间戳转换
  • 原文地址:https://www.cnblogs.com/Lival/p/4390668.html
Copyright © 2020-2023  润新知