列表

作者: Vector_Wan | 来源:发表于2019-05-02 11:58 被阅读0次

    列表

    list 可以存储不同数据类型的数据

    name_list = ['鲁班', 'xiaoming', 1024]
    name_list
    
    ['鲁班', 'xiaoming', 1024]
    
    type(name_list)
    
    list
    
    # 访问
    name_list[0]
    
    '鲁班'
    
    # 遍历
    for name in name_list:
        print(name)
    
    鲁班
    xiaoming
    1024
    
    i = 0
    while i < len(name_list):
        print(name_list[i])
        i += 1
    
    鲁班
    xiaoming
    1024
    

    列表的相关操作

    # 查看列表的方法
    print(dir([]))
    
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
    

    <1> 添加操作

    append()

    在指定位置后插入

    str = input('请输入你想添加的内容:')
    name_list.append(str)
    print('添加后:',name_list)
    
    请输入你想添加的内容: 小丽
    
    
    添加后: ['鲁班', 'xiaoming', 1024, '小丽']
    
    list1 = []
    for i in range(10):
        list1.append(i)
        print(list1)
    
    [0]
    [0, 1]
    [0, 1, 2]
    [0, 1, 2, 3]
    [0, 1, 2, 3, 4]
    [0, 1, 2, 3, 4, 5]
    [0, 1, 2, 3, 4, 5, 6]
    [0, 1, 2, 3, 4, 5, 6, 7]
    [0, 1, 2, 3, 4, 5, 6, 7, 8]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    insert()

    在指定位置 index 前插入元素 object

    a = [0,1,2]
    a.insert(1,10)   # (位置索引,对象)
    a
    
    [0, 10, 1, 2]
    

    extend()

    将另外一个集合逐一的添加到列表中

    a = [1, 2]
    b = [3, 4]
    a.extend(b)
    print(a)
    
    [1, 2, 3, 4]
    
    a.append(b)
    a
    
    [1, 2, 3, 4, [3, 4]]
    

    <2> 修改操作

    name_list[1] = '小明'
    name_list
    
    ['鲁班', '小明', 1024, '小丽']
    

    <3> 查询操作

    根据内容查询

    find_name = '小明'
    if find_name in name_list:
        print('小明在!')
    else:
        print('buzai')
    
    小明在!
    

    根据索引查询

    
    # index()查找元素第一次出现的位置
    
    a = ['a', 'b', 'c', 'a', 'b']
    index = a.index('c',1, 3)  # [1,3) 内查找
    index
    
    2
    

    根据内容查询出现的次数

    a.count('b')
    
    2
    

    <4> 删除操作

    del 根据下标删除

    pop 删除最后一个元素

    remove 根据元素值进行删除

    name_list = ['鲁班', 'xiaoming', 1024]
    print('删除前:', name_list)
    
    del name_list[0]
    
    print('删除后:', name_list)
    
    删除前: ['鲁班', 'xiaoming', 1024]
    删除后: ['xiaoming', 1024]
    
    name_list = ['鲁班', 'xiaoming', 1024]
    print('删除前:', name_list)
    
    name_list.pop()
    
    print('删除后:', name_list)
    
    删除前: ['鲁班', 'xiaoming', 1024]
    删除后: ['鲁班', 'xiaoming']
    

    当 pop 指定索引后也可以指定位置删除。

    name_list = ['鲁班', 'xiaoming', 1024]
    print('删除前:', name_list)
    
    name_list.pop(-2)
    
    print('删除后:', name_list)
    
    删除前: ['鲁班', 'xiaoming', 1024]
    删除后: ['鲁班', 1024]
    
    name_list = ['鲁班', 'xiaoming', 1024]
    print('删除前:', name_list)
    
    name_list.remove('xiaoming')
    
    print('删除后:', name_list)
    
    删除前: ['鲁班', 'xiaoming', 1024]
    删除后: ['鲁班', 1024]
    

    列表的排序

    from random import randint
    num = randint(-10, 10)  # 生成 [10,10] 范围内的随机数
    num_list = []
    for _ in range(10):
        num_list.append(randint(1, 20))
    print(num_list)
    
    [20, 8, 2, 8, 6, 18, 16, 1, 20, 15]
    
    num_list.sort()
    
    print(num_list)
    
    num_list.sort(reverse = True) # 逆序排序
    
    print(num_list)
    
    [1, 2, 6, 8, 8, 15, 16, 18, 20, 20]
    [20, 20, 18, 16, 15, 8, 8, 6, 2, 1]
    
    kk = sorted(num_list)
    print(kk)
    print(num_list)
    num_list.sort()
    print(num_list)
    # 区别
    # .sort() 对原来的列表进行修改排序
    # sorted(num_list)对原来的没有改变
    # .sort() 是列表的成员方法
    # sorted 可以对所有可迭代对象进行操作
    # ls.sort()  sorted(ls)  调用方式不同
    
    [1, 2, 6, 8, 8, 15, 16, 18, 20, 20]
    [20, 20, 18, 16, 15, 8, 8, 6, 2, 1]
    [1, 2, 6, 8, 8, 15, 16, 18, 20, 20]
    

    列表的嵌套

    列表的列表

    school_name = [['清华', '北大'],['南开', '天大'],['东秦', '燕山']]
    school_name
    
    [['清华', '北大'], ['南开', '天大'], ['东秦', '燕山']]
    
    print(school_name[0][1])
    # numpy中可以 school_name[0, 1] 访问
    
    北大
    

    列表推导式

    列表推导式就是指 使用轻量级循环创建列表

    list1 = []
    for i in range(10):
        list1.append(i)
    print(list1)
    
    list2 = [i for i in range(10)]
    print(list2)
    
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    list3 = [i for i in range(2, 17, 2)]
    list3
    
    [2, 4, 6, 8, 10, 12, 14, 16]
    
    list1 = []
    for _ in range(10):
        list1.append('不给我鲁班我就送')
    print(list1)
    
    list4 = ["不给我鲁班我就送" for _ in range(10)]
    print(list4)
    
    ['不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送']
    ['不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送']
    
    from random import randint
    l = [randint(-10,10) for _ in range(10)]  # 生成 10 个元素,范围在【-10,10】区间的列表
    print('原列表:', l)
    # 选出大于等于 0 的数据
    res = []
    for x in l:
        if x>= 0:
            res.append(x)
    print("使用for循环筛选:", res)
    
    # 循环的过程中使用 if
    res2 = [x for x in l if x >= 0]
    
    print("使用列表推导式删选:", res2)
    
    原列表: [-2, 9, -9, -1, 3, 2, -2, -5, -2, -7]
    使用for循环筛选: [9, 3, 2]
    使用列表推导式删选: [9, 3, 2]
    

    列表与字符串

    my_list = ['welcome', 'to', 'Ml', 'world']
    my_list_to_str = str(my_list)  # 效果不好
    print(my_list_to_str)
    print(' '.join(my_list))
    print('_'.join(my_list))
    
    ['welcome', 'to', 'Ml', 'world']
    welcome to Ml world
    welcome_to_Ml_world
    
    # 列表和字符串的  *
    str1 = 'hehe'*3
    print(str1)
    
    list4 = ['6', 9, 0]*5
    print(list4)
    
    hehehehehehe
    ['6', 9, 0, '6', 9, 0, '6', 9, 0, '6', 9, 0, '6', 9, 0]
    
    # 练习
    
    numbers = [i for i in range(11)]
    print(numbers)
    # 筛选出偶数的数据
    numbers2 = []
    for number in numbers:
        if number%2 == 0:
            numbers2.append(number)
    print(numbers2)
    
    number3 = [number for number in numbers if number%2 == 0]
    print(number3)
    
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    [0, 2, 4, 6, 8, 10]
    [0, 2, 4, 6, 8, 10]
    
    # 练习2 
    # 一个学校有三个办公室,有八个老师随机分派 完成随机分派
    import string 
    # import random.randint as randint
    from random import randint
    # 定义办公室
    offices = [[],[],[]]
    # 定义老师
    names = list(string.ascii_uppercase[:8])
    print(names)
    
    for name in names:
        # 产生一个随机数[0,2]
        index = randint(0,2)
        offices[index].append(name)
    print(offices)
    
    i = 1
    for tempNames in offices:
        print('办公室{}的中的人数为{}'.format(i,len(tempNames)))
        i += 1
        print('成员为:')
        for name in tempNames:
            print('{}'.format(name),end = '')
        print('\n','-'*30)
    
    ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
    [['F'], ['A', 'B'], ['C', 'D', 'E', 'G', 'H']]
    办公室1的中的人数为1
    成员为:
    F
     ------------------------------
    办公室2的中的人数为2
    成员为:
    AB
     ------------------------------
    办公室3的中的人数为5
    成员为:
    CDEGH
     ------------------------------
    
    
    

    相关文章

      网友评论

          本文标题:列表

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