美文网首页
Python基础--列表与元组

Python基础--列表与元组

作者: 琰雪儿 | 来源:发表于2021-05-17 22:27 被阅读0次

    一、列表

    Python中等列表与Java等语言中等数组类似。用方括号[]包括起来,以逗号,来分隔其中的元素。元素可以是任意类型,数字(整数和浮点数)、布尔(bool)、字符串、列表、字典、元组。
    例:

    >>> list = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']
    >>> print(list)
    ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']
    

    1.索引

    ①正索引和负索引

    在字符串一节我们提到,Python中的字符串其实是一个Unicode字符列表,并且具有正负索引。列表具有正负索引。
    以上例中的列表为例:

    字符 星期一 星期二 星期三 星期四 星期五 星期六 星期天
    正索引 0 1 2 3 4 5 6
    负索引 -7 -6 -5 -4 -3 -2 -1
    >>> list[3]
    '星期四'
    >>> list[-4]
    '星期四'
    # 字符串本身就是字符列表,所以字符串列表本质就是个二维列表。
    >>> list[3][2]
    '四'
    
    虽然拥有正负索引,但是仍然需要注意超出索引范围导致的错误
    >>> list[-8]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    >>> list[7]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    

    ②列表截取(切片):截取后的内容组成新的列表

    语法:list[开始索引:结束索引],遵循包左不包右原则。不写开始索引和结束索引,为全部。

    >>> list = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']
    >>> list[2:6]
    ['星期三', '星期四', '星期五', '星期六']
    >>> list[2:]
    ['星期三', '星期四', '星期五', '星期六', '星期天']
    >>> list[:6]
    ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
    >>> list[:]
    ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']
    

    2.添加列表元素

    append():列表末尾添加

    >>> list.append("假期")
    >>> print(list)
    ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天', '假期']
    

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

    >>> list.insert(3,"insert")
    >>> print(list)
    ['星期一', '星期二', '星期三', 'insert', '星期四', '星期五', '星期六', '星期天', '假期']
    

    extend():将一个列表依次插入到另一个列表中

    >>> list.extend(extendList)
    >>> print(list)
    ['星期一', '星期二', '星期三', 'insert', '星期四', '星期五', '星期六', '星期天', '假期', '周一', '周二', '周三']
    

    3.删除列表元素

    del语句和del()删除元素:可以根据索引删除任何位置的列表元素

    # 删除前
    >>> print(list)
    ['星期一', '星期二', '星期三', 'insert', '星期四', '星期五', '星期六', '星期天', '假期', '周一', '周二', '周三']
    >>> del list[3]
    # 删除后
    >>> print(list)
    ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天', '假期', '周一', '周二', '周三']
    >>> del(list[1])
    >>> print(list)
    ['星期一', '星期三', '星期四', '星期五', '星期六', '星期天', '假期', '周一', '周二', '周三']
    

    pop()删除元素:默认索引为-1,删除最后一个列表值。并且返回该元素的值。也可以通过设置下标索引进行删除

    # 删除前
    >>> print(list)
    ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天', '假期', '周一', '周二', '周三']
    >>> list.pop()
    '周三'
    # 删除前
    >>> print(list)
    ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天', '假期', '周一', '周二']
    >>> list.pop(-2)
    '周一'
    

    remove():根据值删除元素

    # 删除前
    >>> print(list)
    ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天', '假期', '周二']
    >>> list.remove("周二")
    # 删除后
    >>> print(list)
    ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天', '假期']
    

    只会删除第一次出现的值。

    >>> removelist = [1,1,3,3,4,1,1,6]
    >>> removelist.remove(1)
    >>> print(removelist)
    [1, 3, 3, 4, 1, 1, 6]
    

    clear()清空列表,类似于 del a[:]

    >>> list.clear()
    >>> print(list)
    []
    

    总结:

    1、知道值不知道索引选`remove()`;
    2、知道索引但是不再使用被删除的值选`del`;
    3、知道索引在删除后还想继续使用被删除的值,选`pop()`。
    

    4.修改列表元素

    修改元素的语法与访问的语法类似,直接通过索引获取要修改的元素,然后给其设置上新的值即可。

    # 修改前
    >>> print(list)
    ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天', '假期']
    >>> list[-1] = "不放假"
    # 修改后
    >>> print(list)
    ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天', '不放假']
    

    5.列表的整理

    sort():对列表进行永久性排序

    >>> sortlist = [332,12,1,4,55,2,44]
    >>> sortlist.sort()
    >>> print(sortlist)
    [1, 2, 4, 12, 44, 55, 332]
    

    sorted():对列表进行临时排序

    >>> sortedlist = [332,12,1,4,55,2,44]
    >>> sorted(sortedlist)
    [1, 2, 4, 12, 44, 55, 332]
    >>> print(sortedlist)
    [332, 12, 1, 4, 55, 2, 44]
    

    reverse():按照索引位置,整体倒过来,不是按照顺序排序。

    >>> reverselist = [23,11,23,1,4,555,666]
    >>> reverselist.reverse()
    >>> print(reverselist)
    [666, 555, 4, 1, 23, 11, 23]
    

    6.列表索引的查找

    >>> list = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天', '假期']
    >>> list.index("星期三")
    2
    >>> list.index("星期三",2)
    2
    # 包左不包右
    >>> list.index("星期三",0,2)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: '星期三' is not in list
    >>> list.index("星期三",0,3)
    2
    

    7.统计列表中元素出现的次数

    >>> list = [123,122,333,22,111,1123,123,123]
    >>> list.count(123)
    3
    

    8.列表的复制

    语法:目的列表 = 复制源列表[:]

    >>> list1 = [1,2,3,4]
    >>> list2 = list1[:]
    >>> list2
    [1, 2, 3, 4]
    

    肯定有人问了,为什么不直接写成list2 = list1。我们先看一下效果。

    >>> list3 = list1
    >>> list3
    [1, 2, 3, 4]
    

    在不对列表进行改变的前提下,两者都达到了复制都目的,但是从根本上来讲。list3 = list1利用Java中都地址值来说。list3list1指向同一地址,也就是说,list3就是list1list1就是list3,两者直接是完全相同都,而不是复制出来都副本关系。我们现在来改变list1都值,再来看list2list3都变化。

    >>> list1[1] = 22
    >>> list1
    [1, 22, 3, 4]
    >>> list2
    [1, 2, 3, 4]
    >>> list3
    [1, 22, 3, 4]
    

    现在可以看出两者都区别了吧! 所以列表复制的语法必须是目的列表 = 复制源列表[:]

    9.列表解析又叫做列表推导式

    在学习之前我们先学习range()方法,用来生产一系列数字

    >>> for value in range(1,6):
    ...     print(value)
    ...
    1
    2
    3
    4
    5
    

    语法:

    [expression for iter_val in iterable]
    [expression for iter_val in iterable if cond_expr]
    
    >>> list = [value for value in range(1,10)]
    >>> print(list)
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    >>> list = [value for value in range(1,10) if value >= 4]
    >>> print(list)
    [4, 5, 6, 7, 8, 9]
    

    10.多重赋值

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

    当然需要赋值的变量个数要与列表长度一致,否则便会报错。

    >>> a, b, c, d, e=list1
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: not enough values to unpack (expected 5, got 4)
    >>> a, b, c=list1
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: too many values to unpack (expected 3)
    

    二、元组

    Python元组列表类似,不同之处在于元组的元素不能修改。元组使用小括号(),列表使用方括号[]
    注意:元组中只包含一个元素时,需要在元素后面添加逗号tup1 = (1,)。因为不带逗号python会将其识别为其他类型。

    # 不加逗号
    >>> tup1 = (1)
    >>> tup1
    1
    >>> type(tup1)
    <class 'int'>
    # 加上逗号
    >>> tup1 = (1,)
    >>> tup1
    (1,)
    >>> type(tup1)
    <class 'tuple'>
    

    虽然元组自身不能修改但是可以通过多个元组拼接成新元组。

    >>> tup1=(1,2)
    >>> tup2=(2,3)
    >>> tup3=tup1+tup2
    >>> tup3
    (1, 2, 2, 3)
    

    也可以通过del语句来删除整个元组。

    >>> tup3
    (1, 2, 2, 3)
    >>> del tup3
    >>> tup3
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'tup3' is not defined
    

    无关闭分隔符,任意无符号的对象,以逗号隔开,默认为元组。

    >>> tup1 = 12,31
    >>> tup1
    (12, 31)
    >>> type(tup1)
    <class 'tuple'>
    

    关于列表与元组就到此结束了。

    每日一言
    虽然选择大于努力,但努力会为选择提供更多的选项。

    相关文章

      网友评论

          本文标题:Python基础--列表与元组

          本文链接:https://www.haomeiwen.com/subject/ixfbkltx.html