美文网首页
Python列表

Python列表

作者: C_Z_Q_ | 来源:发表于2019-11-06 18:35 被阅读0次

    列表

    • 列表是Python中内置有序可变序列,所有元素放在[]中,每个元素使用逗号隔开

    1)创建列表

    list_1 = ['鲁班', '安其拉', '狄仁杰', ['科比', '詹姆斯']]
    

    2)列表的访问

    • 格式:列表名[index]
    list_1 = ['鲁班', '安其拉', '狄仁杰', ['科比', '詹姆斯']]
    print(list_1[3])
    print(list_1[3][0])
    

    3)查看列表里的元素个数

    list_1 = ['鲁班', '安其拉', '狄仁杰', ['科比', '詹姆斯']]
    print(len(list_1))   #4
    

    4)列表的添加

    • append
      向列表尾部增加一元素,不改变其内存首地址属于原地操作
    list_1 = ['鲁班', '安其拉', '狄仁杰', ['科比', '詹姆斯']]
    list_1.append(['1', '2', '3'])
    print('添加后列表的值是', list_1)
    
    • insert(index, object)
      向列表任意位置插入一个元素,不改变其内存首地址属于原地操作
    list_1 = ['鲁班', '安其拉', '狄仁杰', ['科比', '詹姆斯']]
    list_1.insert(3, '今天列表天气不错')
    print('使用insert 添加后输出的值是', list_1)
    
    • extend()
      将另一个迭代对象的所有元素添加至该列表对象尾部,不改变其内存首地址属于原地操作
    list_1 = ['鲁班', '安其拉', '狄仁杰', ['科比', '詹姆斯']]
    list_1.extend([3, 4, 5, 6, 6])
    print('使用extend 添加后输出的值是', list_1)#['鲁班', '安其拉', '狄仁杰', ['科比', '詹姆斯'], 3, 4, 5, 6, 6]
    

    5)列表的 + 和 * 操作

    • '+' 是连接两个列表
    • '*' 是复制列表
      这两个操作并不是真的为列表添加元素,而是创建一个新的列表,不属于原地操作,返回的是新的列表
    x = [1, 2, 3]
    y = x + [4]
    print(y)  #[1, 2, 3, 4]
    y = x * 2
    print(y)
    

    6)列表元素的删除

    • pop()
      使用列表的pop()方法删除并且返回指定(默认是最后一个)位置元素,如果给出的索引超过了list的范围则会抛出异常
    x = [1, 2, 3, 4, 5]
    x.pop()
    print(x)#[1, 2, 3, 4]
    #返回值
    value = x.pop(1)
    print('有返回值和删除后的', x, value)#[1, 3, 4] 2
    
    • remove
      删除首次出现的指定元素,如果列表中不存在要删除的元素,则抛出异常
    x = [1, 2, 3, 2, 4, 5]
    x.remove(2)
    print('remove删除后', x)
    
    • clear 清空列表
    x = [1, 2, 3, 2, 4, 5]
    x.clear()
    print('清空后的x ', x)
    
    • del
      删除列表中指定位置的元素,如果列表超出索引范围,则抛出异常
      格式:del 列表[index]
    x = [1, 2, 3, 2, 4, 5]
    del x[0]
    print(x)#[2, 3, 2, 4, 5]
    

    7)列表元素的计数

    • count
      统计指定元素在列表中出现的次数
    x = [1, 2, 3, 2, 4, 5, 5, 5]
    print(x.count(2))
    print(x.count(5))
    print(x.count(0))
    
    • index()
      获取指定元素首次出现的下标,若列表对象中不存在指定元素,抛异常
    x = [1, 2, 3, 2, 4, 5, 5, 5]
    print(x.index(2))
    print(x.index(1))
    print(x.index(2,2,4))#左闭右开
    

    8)in
    测试列表是否含有该元素 返回bool类型

    x = [1, 2, 3, 2, 4, 5, 5, 5]
    print(6 in x)   #False
    print(1 in x)   #True
    print(6 not in x)  #True
    

    9)列表的排序

    • 列表的内置方法:列表名.sort()

    1)创建列表

    list1 =[]
    for x in range(15):
        list1.insert(0, x)
    print(list1)
    

    2)打乱顺序

    from random import shuffle
    shuffle(list1)
    print('打乱顺序后', list1)
    
    • sort和sorted排序

    1)sort排序

    list1.sort()
    print('排序后', list1)
    list1.sort(reverse=True)#指定为逆序排序
    print(list1)
    reverse()   #将列表的所有元素原地逆序排序
    list1.reverse()
    print('排序后',list1)
    

    2)sorted排序

    • sorted()
      内置函数sorted 对列表进行排序并且返回新的列表,不对原来列表进行修改
    sorted(list1)
    print('排序后', list1)  # 排序后 [13, 12, 0, 14, 11, 9, 10, 3, 6, 5, 8, 7, 1, 4, 2]
    list1 = sorted(list1)
    print('排序后', list1)  # 排序后 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
    
    • 注:reversed() 返回一个逆序排序后的迭代对象,不对原来列表做修改
    list1 = reversed(list1)
    print(list1)  # <list_reverseiterator object at 0x0043EDB0>
    list1 = list(reversed(list1))
    print(list1)  # [14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
    

    用于序列(列表、元组、字符串)操作的常用内置函数

    • len()
      返回序列中元素的个数 适用对象:集合、元组、列表、字典
    x = [1, 2, 3]
    print(len(x))
    
    • max和min
      返回列表中最大或最小的元素
      同样适用于集合、元组、列表、字典
    print(max(x))
    print(min(x))
    
    • sum()
      对迭代对象进行求和
    print(sum(x))
    
    • zip()
      返回可迭代的zip对象
      常常用于同时迭代两个列表

    举例1:

    heros = ['鲁班', '后裔']
    skills = ['技能1', '技能2']
    for hero, skill in zip(heros, skills):
        print(hero, '---->', skill)
    

    举例2:

    a = [1, 2, 3]
    b = [4, 5, 6]
    c = [4, 5, 6, 7, 8]
    zipped = zip(a, b)
    print(zipped)
    print(list(zipped))
    print(list(zip(a, c)))  #元素个数与最短的一致
    a1, a2 = zip(*zip(a, b))      #zip(*)    可以理解为解压,返回二维矩阵
    print(list(a1))
    print(list(a2))
    
    • enumerate
      枚举 列表元素,返回枚举对象,其中每个元素包含下表和元素本身 的一个元组
    for x in enumerate(['a','b','c']):
        print(x)
    #(0, 'a')
    #(1, 'b')
    #(2, 'c')
    

    遍历

    • 遍历列表的三种方式:
    l1 = ['a', 'b', 'c', 'd', 'e', 'f']
    for x in l1:
        print(x)
    
    for i in range(len(l1)):
        print(l1[i])
    
    for index, val in enumerate(l1):
        print(val)
    

    列表推导式

    也叫生成表达式,列表推导式使用非常简洁的方式来快速生成满足特定需求的列表,代码具有非常强的可读性
    语法:[返回表达式 for 临时变量 in 可迭代对象 条件表达式]
    注:列表推导式逻辑上是一个for循环,只不过更加简洁

    li = [0,1,2,3.....9]
    li = [i for i in range(10)]
    print(li)
    
    • 列表嵌套
    result = []
    L = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    #平铺这个列表
    for l in L:
        for x in l:
            result.append(x)
    print(result)    #[1, 2, 3, 4, 5, 6, 7, 8, 9]
    #使用列表推导式对列表进行平铺
    print([x for l in L for x in l])
    
    • 过滤不符合条件的元素
      表达式:[返回表达式 for 临时变量 可迭代对象 条件表达式]
    from random import randint
    #  _下划线的目的是增强代码可读性,告诉读代码的人这里不需要临时变量
    l2 = [randint(-20, 20) for _ in range(10)]
    # print(l2)
    #使用列表推导式  筛选出所有大于0的元素
    print([i for i in l2 if i > 0])
    

    作业
    1.我国现有13亿人口,设每年增长0.8%,编写程序,计算多少年后达到26亿?

    sum = 13
    i = 1
    while True:
        sum *= 1.008
        if sum >= 26:
             break
        i += 1
    print(i)
    

    2.求1!+2!+3!+4!+5!的和。

    sum = 0
    for i in range(1, 6):
        x = 1
        for m in range(1, i+1):
            x *= m
        sum += x
    print(sum)
    

    3.星号三角形:读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求:第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。
    输入:3
    输出:


    N = int(input('请输入奇数:'))
    for x in range(1, N+1):
        if x % 2 != 0:
            print(' '*int(((N-x)/2)), end='')
            print('*'*x, end='')
        print()
    

    相关文章

      网友评论

          本文标题:Python列表

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