• python 之 列表list && 元组tuple


    目录:

    • 列表
      •  列表基本操作
      •  列表的操作符
      •  列表的函数和方法
    • 元组

    介绍:

    列表是一种可变的有序集合,可以进行访问、添加和删除操作。

    元组是一种不可变的有序集合,可以访问。

    1、列表的基本操作

    创建列表

    1 ls = ['mary', 'tom', 'kate']
    2 ['mary', 'tom', 'kate']

    注意:列表中的元素可以为不同类型,且可以为列表

    1 In [29]: ls2=[1,2,'d','fairy',[1,4]]
    2 In [30]: ls2
    3 Out[30]: [1, 2, 'd', 'fairy', [1, 4]]

    列表元素的访问和截取

     1 In [7]: ls[1]
     2 Out[7]: 'tom'
     3 
     4 In [8]: ls[-1]
     5 Out[8]: 'kate'
     6 
     7 // 包含1从1开始的元素:ls[1],ls[2]
     8 In [11]: ls[1:]
     9 Out[11]: ['tom', 'kate']
    10 
    11 // 不包含2到2为止的元素:ls[0],ls[1]
    12 In [13]: ls[:2]
    13 Out[13]: ['mary', 'tom']
    14 
    15 // ls中的所有元素
    16 In [9]: ls[:]
    17 Out[9]: ['mary', 'tom', 'kate']

    更新和添加列表元素

    1 // 更新列表元素
    2 In [92]: ls[1]='jerry'
    3 In [93]: ls
    4 Out[93]: ['mary', 'jerry', 'kate']
    1 // 在列表尾部添加元素 'me'
    2 In [16]: ls.append('me')
    3 In [17]: ls
    4 Out[17]: ['mary', 'tom', 'kate', 'me']
    5 
    6 // 在列表索引为2处添加元素 'jack'
    7 In [18]: ls.insert(2,'jack')
    8 In [19]: ls
    9 Out[19]: ['mary', 'tom', 'jack', 'kate', 'me']

    注意:不存在的元素不可以用索引来引用或添加

     1 // 注意:不存在的元素不可以用索引来引用或者添加
     2 In [14]: ls[3]
     3 ---------------------------------------------------------------------------
     4 IndexError                                Traceback (most recent call last)
     5 <ipython-input-14-bc53f97bfb95> in <module>()
     6 ----> 1 ls[3]
     7 IndexError: list index out of range
     8 
     9 In [15]: ls[3]='me'
    10 ---------------------------------------------------------------------------
    11 IndexError                                Traceback (most recent call last)
    12 <ipython-input-15-41a017d867bd> in <module>()
    13 ----> 1 ls[3]='me'
    14 IndexError: list assignment index out of range

    删除列表元素

     1 // 删除列表的最后一个元素,且返回此元素
     2 In [20]: ls.pop()
     3 Out[20]: 'me'
     4 In [21]: ls
     5 Out[21]: ['mary', 'tom', 'jack', 'kate']
     6 
     7 // 删除列表索引为2处的元素且返回此元素
     8 In [22]: ls.pop(2)
     9 Out[22]: 'jack'
    10 In [23]: ls
    11 Out[23]: ['mary', 'tom', 'kate']
    12 
    13 // 移除列表中匹配为'tom'的元素,不返回任何值
    14 In [25]: ls.remove('tom')
    15 In [26]: ls
    16 Out[26]: ['mary', 'kate']
    17 
    18 // 清空列表
    19 lIn [27]: ls.clear()
    20 In [28]: ls
    21 Out[28]: []
    1 // 删除索引为0的列表元素
    2 In [88]: ls
    3 Out[88]: [1, 2]
    4 In [89]: del ls[0]
    5 In [90]: ls
    6 Out[90]: [2]

    删除列表

    1 In [96]: lss=[1,2,3]
    2 In [97]: del lss
    3 In [98]: lss
    4 ---------------------------------------------------------------------------
    5 NameError                                 Traceback (most recent call last)
    6 <ipython-input-98-3ee6987b75c4> in <module>()
    7 ----> 1 lss
    8 
    9 NameError: name 'lss' is not defined

    2、列表操作符

     1 // 列表长度
     2 In [33]: len([1,2,3])
     3 Out[33]: 3
     4 
     5 // 列表加
     6 In [34]: [1,2,3]+[4,5,6]
     7 Out[34]: [1, 2, 3, 4, 5, 6]
     8 
     9 // 列表乘
    10 In [35]: ['Echo']*3
    11 Out[35]: ['Echo', 'Echo', 'Echo']
    12 
    13 // 判断是否在列表中
    14 In [36]: 1 in [1,2,3]
    15 Out[36]: True
    16 
    17 In [37]: 1 in [4,2,3]
    18 Out[37]: False

    3、列表的函数和方法

    函数

     1 // 返回列表长
     2 In [38]: len([1,2,3])
     3 Out[38]: 3
     4 
     5 // 返回列表中最大元素
     6 In [39]: max([1,2,3])
     7 Out[39]: 3
     8 
     9 // 返回列表中最小元素
    10 In [40]: min([1,2,3])
    11 Out[40]: 1
    12 
    13 // 将元组转化为列表
    14 In [41]: list((1,2,3))
    15 Out[41]: [1, 2, 3]

    方法

     1 // 统计列表中'a'出现的次数,并返回次数
     2 In [70]: ['a','b','f',1,'a',3].count('a')
     3 Out[70]: 2
     4 
     5 // 统计列表中'a'第一次出现的索引,并返回索引号
     6 In [73]: ['a','b','f',1,'a',3].index('a')
     7 Out[73]: 0
     8 
     9 // 在列表后追加l另一列表中多个元素,不返回
    10 In [42]: ls=['a','b','f',1,'a',3]
    11 In [45]: ls.extend([1,7,8])
    12 In [46]: ls
    13 Out[46]: ['a', 'b', 'f', 1, 'a', 3, 1, 7, 8]
    14 
    15 // 列表的元素反转,不返回
    16 In [49]: ls.reverse()
    17 In [50]: ls
    18 Out[50]: [8, 7, 1, 3, 'a', 1, 'f', 'b', 'a']
    19 
    20 // 列表的排序(可以在sort([func])里指定排序用的方法),不返回
    21 In [53]: ls=[1,4,2,7,3]
    22 In [54]: ls.sort()
    23 In [55]: ls
    24 Out[55]: [1, 2, 3, 4, 7]

    注意:以上不返回的函数和方法就是对列表本身做修改,不会生成新的列表,这里一定要注意

    在python3.6中,赋值和copy方法是一样的:

     1 In [80]: ls=[1,2,3]
     2 // 赋值
     3 In [81]: ls_=ls
     4 // copy方法
     5 In [82]: ls_c=ls.copy()
     6 
     7 In [83]: ls_
     8 Out[83]: [1, 2, 3]
     9 In [84]: ls_c
    10 Out[84]: [1, 2, 3]
    11 
    12 // 改变ls本身的值
    13 In [85]: ls=[1,2]
    14 
    15 // 两者皆不改变
    16 In [86]: ls_
    17 Out[86]: [1, 2, 3]
    18 In [87]: ls_c
    19 Out[87]: [1, 2, 3]

    我本地的python2.7结果和以上是一样的。

    注意:在python2中有cmp(list1,list2)函数,可以比较两个列表是否相等,但是在python3中没有这个函数

     1 // python2.7中
     2 >>> cmp([1,2,3],[4,5,6])
     3 -1
     4 >>> cmp([1,2,3],[1,2,3])
     5 0
     6 
     7 // python3.6中
     8 In [100]: cmp([1,2,3],[4,1,2])
     9 ---------------------------------------------------------------------------
    10 NameError                                 Traceback (most recent call last)
    11 <ipython-input-100-5bb17d70d0be> in <module>()
    12 ----> 1 cmp([1,2,3],[4,1,2])
    13 
    14 NameError: name 'cmp' is not defined

    4、元组

    元组的操作和列表基本一致,需要注意的几个地方是:

    元组的创建是 ” () “,列表的创建是 " [] ", 列表只有一个元素时创建没有问题,但是如果元素只有一个元素,需要在元素后加”,“,否则会被认为只是一个元素本身,元组的创建可以不加” () “;

     1 // 加括号创建
     2 In [101]: tp=(1,2,3)
     3 In [102]: tp
     4 Out[102]: (1, 2, 3)
     5 
     6 // 不加括号创建
     7 In [103]: tp=1,2,3
     8 In [104]: tp
     9 Out[104]: (1, 2, 3)
    10 
    11 // 只有一个元素且不加逗号,不会被识别为元组
    12 In [105]: tp=(1)
    13 In [106]: type(tp)
    14 Out[106]: int
    15 
    16 // 只有一个元素但是加逗号,会被识别成元组
    17 In [107]: tp=(1,)
    18 In [108]: type(tp)
    19 Out[108]: tuple

    除上述不同之外,元组和列表的访问、截取、操作符和函数都是一样的,元组没有更新、添加和删除元素的操作,但是可以删除元组本身,和list的删除一样;

    1 In [109]: del tp
    2 In [110]: tp
    3 ---------------------------------------------------------------------------
    4 NameError                                 Traceback (most recent call last)
    5 <ipython-input-110-6fc78332fdd4> in <module>()
    6 ----> 1 tp
  • 相关阅读:
    poj 3125 Printer Queue(STL注意事项)
    poj 2823 Sliding Window (STL超时版)
    poj 1088 滑雪 详解
    poj 2983 Is the Information Reliable?
    poj 2524 Ubiquitous Religions (STL与非STL的对比)
    高精度算法集合
    zTree v2.6 v3.0 初始化 / 方法对比
    下面是关于rownum的介绍(oracle)
    web性能优化
    jQueryEasyui,DataGrid几个常用的操作
  • 原文地址:https://www.cnblogs.com/echo-coding/p/8734878.html
Copyright © 2020-2023  润新知