• Python列表之班荆道故


    列表list初识

    列表是python的基础数据类型之一 ,它是以[ ]括起来, 每个元素用' , '隔开而且可以存放各种数据类型:

    list列表的定义:

    list_ = []
    list_1 = ["aaa","bbb","cccc","ddd"] list_2 = [1,2,3,4,5] list_3 = ["abc",145,True,["小明","小红",278,33.9],25.9]

    列表的索引和切片操作:

    list_1 = ['a','b','c','d','e','f','g','h','k']
    # 列表的索引
    print(list_1[0],list_1[1],list_1[2])
    # 索引-1代表最后一个元素,-2代表倒数第二个元素依次类推
    print(list_1[-1],list_1[-2],list_1[-3])
    # 列表的切片[start,end,sep]
    # 切片 1
    print(list_1[0:3])
    # 切片 2 设置步长,隔一个打印一个
    print(list_1[0:-1:2])
    # 切片 3 倒叙打印
    print(list_1[-1:0:-1])
    # 切片 3 倒叙打印,隔一个打印一个
    print(list_1[-1:0:-2])
    # 打印内如如下
    a b c
    k h g
    ['a', 'b', 'c']
    ['a', 'c', 'e', 'g']
    ['k', 'h', 'g', 'f', 'e', 'd', 'c', 'b']
    ['k', 'g', 'e', 'c']

    列表的访问与字符串切片类似,通过索引访问列表元素,列表的切片也与字符串类似。

    列表的常用方法

    append(object):向列表的末尾追加元素

    list_1 = ["abc",145,True,["小明","小红",278,33.9],25.9]
    list_1.append("我是追加的")
    # 打印如下内容:
    ['abc', 145, True, ['小明', '小红', 278, 33.9], 25.9, '我是追加的']

    clear():清空列表。

    list_1 = ['a','b','c','d','e','f','g','h','k']
    print(list_1)
    print(list_1.clear())
    # 打印内如如下
    ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'k']
    None

    extend(可迭代对象):列表中迭代添加数据:

    list_1 = ['a','b','c']
    list_1.extend("我是迭代的")
    print(list_1)
    # 打印内容如下
    ['a', 'b', 'c', '', '', '', '', '']

    注意extend(参数)必须是可迭代的对象如list、str、dict、tuple、set等,如整形、bool是不可迭代的所以不能用作参数

    insert(index,object):列表中插入元素。

    参数:

    index:要插入的位置。

    object:插入的数据。

    示例:

    list_1 = ['a','b','c']
    list_1.insert(2,"我是插入的")
    print(list_1)
    # 如果用户输入的索引超过列表的范围则添加到列表的末尾。
    list_1.insert(5,'哈哈')
    print(list_1)
    # 打印内容如下
    ['a', 'b', '我是插入的', 'c']
    ['a', 'b', '我是插入的', 'c', '哈哈']

    注意:如果用户输入的索引超过列表的范围则添加到列表的末尾。

    del: 删除列表,或者删除列表中的元素。

    list_1 = ['a','b','c']
    del list_1[0]  # 删除列表的第一个元素
    print(list_1)
    del list_1    # 删除列表
    print(list_1)
    # 打印内容如下
    ['b', 'c']
    Traceback (most recent call last):
      File "C:Usersid_iotDesktop1.py", line 5, in <module>
        print(list_1)
    NameError: name 'list_1' is not defined

    注意:del是没有返回值的。

    pop(index):删除列表元素,如果没找到索引报错。

    list_1 = ['a','b','c','d','e']
    # 删除列表的第三个元素
    buf = list_1.pop(2)
    print(f'删除的元素是:{buf}')
    # 删除列表的最后一个元素
    buf = list_1.pop()
    print(f'删除的元素是:{buf}')
    # 如果删除的索引超过范围会报错。
    buf = list_1.pop(10)
    print(list_1)
    # 打印内容如下
    删除的元素是:c
    删除的元素是:e
    Traceback (most recent call last):
      File "C:Usersid_iotDesktop1.py", line 9, in <module>
        buf = list_1.pop(10)
    IndexError: pop index out of range

    注意:pop()删除是有返回值的,可以用一个变量来接收被删除的数据。

    remove(object):根据元素名删除元素。

    list_1 = ['a','b','c','d','e']
    # 删除列表的一个元素
    list_1.remove('b')
    print(list_1)
    # 打印内如如下
    ['a', 'c', 'd', 'e']

    copy():拷贝整个列表(浅拷贝)。

    list_1 = ['a','b',['c','d']]
    temp = list_1.copy()
    # 像列表中添加一个元素
    list_1.append('Hello')
    print(f'list_1:{list_1}')
    print(f'temp:{temp}')
    print('-'*50)
    # 像列表中的嵌套列表添加元素
    list_1[2].append('word')
    print(f'嵌套列表添加元素后list_1:{list_1}')
    print(f'嵌套列表添加元素后temp:{temp}')
    # 打印内如如下
    list_1:['a', 'b', ['c', 'd'], 'Hello']
    temp:['a', 'b', ['c', 'd']]
    --------------------------------------------------
    嵌套列表添加元素后list_1:['a', 'b', ['c', 'd', 'word'], 'Hello']
    嵌套列表添加元素后temp:['a', 'b', ['c', 'd', 'word']]

    reverse():列表倒序,将列表中的内容倒过来(是对列表索引位置的操作,而不是按元素将升序转为降序)

    list_1 = ['a','b',['c','d']]
    list_1.reverse()
    print(list_1)
    # 打印内容如下
    [['c', 'd'], 'b', 'a']

    注意:reverse()函数只能操作本层元素,对于内部嵌套的数据不能进行改变。

    sort(key=None, reverse=False):排序,字符串是按照ASCII码表进行排序。

    参数:

    key:排序规则,是一个函数名,或者是lambda。

    reverse:如果为True降序,为Flase是升序。

    示例:

    list_1 = [1,8,3,6,2]
    list_1.sort()    # 默认升序排列
    print(f'升序排序:{list_1}')
    
    list_1.sort(reverse = True)    # 降序排列
    print(f'降序排序:{list_1}')
    
    print('-'*40)
    
    temp = ['a','z','b','f','d']
    temp.sort()    # 默认升序排列
    print(f'升序排序:{temp}')
    
    temp.sort(reverse = True)    # 降序排列
    print(f'降序排序:{temp}')
    
    print('-'*40)
    
    buf = [(1,2),(1,8),(1,3),(1,6)]
    buf.sort(key=lambda i:i[1])    # 使用匿名函数的方式进行升序排列
    print(f'升序排序:{buf}')
    def fun(em):    # 排序规则
        return em[1]
    buf.sort(key=fun,reverse=True)  # 使用函数的方式进行降序排列
    print(f'降序排序:{buf}')
    
    
    buf = [1,2,'a']
    buf.sort()    # 如果列表的元素不是同类型的会报错
    print(buf)
    # 打印内容如下 升序排序:[1, 2, 3, 6, 8] 降序排序:[8, 6, 3, 2, 1] ---------------------------------------- 升序排序:['a', 'b', 'd', 'f', 'z'] 降序排序:['z', 'f', 'd', 'b', 'a'] ---------------------------------------- 升序排序:[(1, 2), (1, 3), (1, 6), (1, 8)] 降序排序:[(1, 8), (1, 6), (1, 3), (1, 2)] Traceback (most recent call last): File "C:Usersid_iotDesktop1.py", line 29, in <module> buf.sort() # 如果列表的元素不是同类型的会报错 TypeError: '<' not supported between instances of 'str' and 'int'

    sort()排序只支持同种类型进行对比,不支持其它类型进行对比排序。例如字符串只能和字符串相比,整形只能和整形相比较。

    count(value):统计元素value出现的次数,如果找不到返回0。

    list_1 = [1,8,2,6,5,2]
    print(f'2出现的个数:{list_1.count(2)}')
    print(f'9出现的个数:{list_1.count(9)}')
    # 打印内容如下
    2出现的个数:2
    9出现的个数:0

    index(value,start,end):如果只指定value,会在整个列表中进行查找value的索引(找到第一个元素的索引后便不再继续查找)。如果找不到value会报错。可以指定start和end来指定查找范围。.

    value:要查找的元素。

    start:查找的起始位置。

    end:结束位置。

    示例:

    list_1 = [1,8,2,6,5,2,9]
    print(f'2的索引是:{list_1.index(2)}')
    print(f'2从索引3到末尾的索引是:{list_1.index(2,3,-1)}')
    print(f'7的索引是:{list_1.index(7)}')
    # 打印内容如下
    2的索引是:2
    2从索引3到末尾的索引是:5
    Traceback (most recent call last):
      File "C:Usersid_iotDesktop1.py", line 4, in <module>
        print(f'7的索引是:{list_1.index(7)}')
    ValueError: 7 is not in list

    range(start,end,step):与列表的切片类似,从一个范围内提取数据。正常start应小于end也就是从小到大的原则,如果start大于end,需要将step设置为负数。下面是使用实例:

    for i in range(100):    # 打印0到100
        print(i)
    
    for i in range(100,0,-1): # 倒序打印100-1
        print(i)
    
    for i in range(1,100,2): # 打印1-100所有奇数
        print(i)
    
    for i in range(2,101,2): # 打印1-100所有偶数
        print(i)

    下一篇:python 字典,集合:https://www.cnblogs.com/caesar-id/p/10225838.html 

  • 相关阅读:
    [leetCode]剑指 Offer 62. 圆圈中最后剩下的数字
    [leetCode]剑指 Offer 61. 扑克牌中的顺子
    [leetCode]剑指 Offer 60. n个骰子的点数
    POJ
    POJ
    POJ
    codeforces
    LightOJ
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/caesar-id/p/10217462.html
Copyright © 2020-2023  润新知