• 7.Python列表


     

    List列表

     

    序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推

    python有6个序列的内置类型,但最常见的是列表和元组。

    序列都可以进行的操作包括索引,切片,加,乘,检查成员。

    此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

    列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

    列表的数据项不需要具有相同的类型

     

    定义

    创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

    In [1]:
    #声明列表
    Marvel_Heroes = ['jack', 'tom', 'lucy', 'superman', 'ironman']   
    Computer_brands = []
    
    print(id(Marvel_Heroes))
    print(id(Computer_brands))     #定义空列表
    
    #遍历
    for name in Marvel_Heroes:
        print(name)
    
     
    1633246958920
    1633246958856
    jack
    tom
    lucy
    superman
    ironman
    
     


    In [2]:
    #获取第一个元素
    print(Marvel_Heroes[0])
    
    #获取最后一个元素
    print(Marvel_Heroes[-1])
    print(Marvel_Heroes[len(Marvel_Heroes)-1])
    
    #判断是否存在
    result = 'jack' in Marvel_Heroes
    print(result)
    
    #切片操作
    print(Marvel_Heroes[1:3])           #包前不包后
    
    #反向
    print(Marvel_Heroes[-1::-2])
    
     
    jack
    ironman
    ironman
    True
    ['tom', 'lucy']
    ['ironman', 'lucy', 'jack']
    
     

    增 :append() extend() insert(

    删:删除时注意删了一个元素继续原来的遍历可能会造成访问越界。因为删除一个元素直接会在内存减少空间。


    In [3]:
    #增:
    # append(): 在末尾追加
    brands = ['hp', 'thinkpad']
    brands.append('dell')
    print(brands) 
    
    # extend():把字符串一个一个拆了再追加,相当于列表合并 
    names = []
    names.extend('dell')   #示范
    print(names)
    names.extend(brands)   #正确的使用
    print(names)
    
    # insert():指定位置插入,原来的数据往后移动
    brands = ['hp', 'thinkpad']
    brands.insert(1, 'dell')
    print(brands)
    
     
    ['hp', 'thinkpad', 'dell']
    ['d', 'e', 'l', 'l']
    ['d', 'e', 'l', 'l', 'hp', 'thinkpad', 'dell']
    ['hp', 'dell', 'thinkpad']
    
    In [4]:
    #删
    brands = ['hp', 'thinkpad', 'lenovo', 'huawei', 'dell', 'mac', 'apple', 'hp', 'hp', 'acer']
    l = len(brands)
    i = 0
    while i < l:
        if 'hp' == brands[i] or 'mac' == brands[i]:
            del brands[i]
            l -= 1
            i -= 1                   #防止出现连续的情况,漏删了后面内容
        i += 1
    print(brands)
    
    #防止漏删法2
    brands = ['hp', 'thinkpad', 'lenovo', 'huawei', 'dell', 'mac', 'apple', 'hp', 'hp', 'acer']
    
    l = len(brands)
    i = 0
    while i < l:
        if 'hp' != brands[i] and 'mac' != brands[i]:
            i += 1
        else:
            del brands[i]
            l -= 1
    print(brands)
    
    #防止漏删法3
    brands = ['hp', 'thinkpad', 'lenovo', 'huawei', 'dell', 'mac', 'apple', 'hp', 'hp', 'acer']
    l = len(brands)
    i = 0
    while i < l:
        if 'hp' == brands[i] or 'mac' == brands[i]:
            del brands[i]
            l -= 1
            continue                   #防止漏删了连续的内容
        i += 1
    print(brands)
    
     
    ['thinkpad', 'lenovo', 'huawei', 'dell', 'apple', 'acer']
    ['thinkpad', 'lenovo', 'huawei', 'dell', 'apple', 'acer']
    ['thinkpad', 'lenovo', 'huawei', 'dell', 'apple', 'acer']
    
    In [5]:
    #改
    brands[5] = 'xiaomi'
    print(brands)
    
     
    ['thinkpad', 'lenovo', 'huawei', 'dell', 'apple', 'xiaomi']
    
     

    排序

    In [6]:
    import random
    random_list = random.sample(range(0, 100), 6)
    print(random_list)
    
    list_sum = sum(random_list)
    print(list_sum)
    
    random_list = sorted(random_list)  #默认为升序,sorted(random_list, reverse = False)
    print(random_list)
    
     
    [25, 5, 22, 88, 38, 70]
    248
    [5, 22, 25, 38, 70, 88]
    
     

    列表函数

    添加:append extend insert 删除:del remove(e):移除列表中第一次出现的元素,如果没有找到要删除的元素则报异常 pop():弹栈,移除列表中的最后一个元素,返回值是删除的那个元素,但是也可以指定index删除 clear():清空列表,将列表的所有内容全部删除

    In [7]:
    hotpot_list = ['海底捞', '呷哺呷哺', '热辣一号', '宽板凳']
    print(hotpot_list)
    print('------------------------------------------------------------')
    
    hotpot_list.append('张亮麻辣烫')
    print(hotpot_list)
    print('------------------------------------------------------------')
    
    result = hotpot_list.remove('张亮麻辣烫')        #移除列表中第一次出现的元素,如果没有找到要删除的元素则报异常
    print(result)                                    #没有返回值
    print(hotpot_list)
    print('------------------------------------------------------------')
    
    hotpot_list.append('张亮麻辣烫')
    result = hotpot_list.pop()                       #弹栈,移除列表中的最后一个元素,返回值是删除的那个元素
    print(result)                                    #返回值是最后一个元素
    print(hotpot_list)
    result = hotpot_list.pop(2)
    print(result)
    print(hotpot_list)
    print('------------------------------------------------------------')
    
    hotpot_list.reverse()           #将列表倒序
    print(hotpot_list)
    
    print('------------------------------------------------------------')
    hotpot_list.clear()
    print(hotpot_list)
    
     
    ['海底捞', '呷哺呷哺', '热辣一号', '宽板凳']
    ------------------------------------------------------------
    ['海底捞', '呷哺呷哺', '热辣一号', '宽板凳', '张亮麻辣烫']
    ------------------------------------------------------------
    None
    ['海底捞', '呷哺呷哺', '热辣一号', '宽板凳']
    ------------------------------------------------------------
    张亮麻辣烫
    ['海底捞', '呷哺呷哺', '热辣一号', '宽板凳']
    热辣一号
    ['海底捞', '呷哺呷哺', '宽板凳']
    ------------------------------------------------------------
    ['宽板凳', '呷哺呷哺', '海底捞']
    ------------------------------------------------------------
    []
    
     

    enumerate():函数用于将一个可遍历的数据对象(如列表、元祖或字符串)组合为一个索引序列。

    In [8]:
    l1 = ['a', 'abc', 'jk', 'poop']
    for value in l1:
        print(value)
    
    for index, value in enumerate(l1):
        print(index, value)
    
     
    a
    abc
    jk
    poop
    0 a
    1 abc
    2 jk
    3 poop
    
    In [9]:
    ###例子:冒泡排序
    numbers = [5, 7, 8, 9, 4, 2, 3, 1, 6, 10]
    #numbers = sorted(numbers)
    print ('排序前列表    :',numbers)
    
    for i in range(len(numbers)):
        temp = numbers[i]
        for index, value in enumerate(numbers[i:]):
            if temp > value:
                numbers[index + i] = temp
                temp = value
        numbers[i] = temp
    print('冒泡排序后列表:',numbers)
    
     
    排序前列表    : [5, 7, 8, 9, 4, 2, 3, 1, 6, 10]
    冒泡排序后列表: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
  • 相关阅读:
    资源汇总
    最近面试经历
    Screen Space Ambient Occlusion
    实时渲染下的多线程协作:实践
    High Dynamic Range
    Deferred Shading
    实时渲染下的多线程协作
    9.了解四个相等判断的用法
    14.使用构造函数链
    16.垃圾最小化
  • 原文地址:https://www.cnblogs.com/King-Penguin/p/12156584.html
Copyright © 2020-2023  润新知