zoukankan      html  css  js  c++  java
  • 列表

    函数,面向过程的叫法(C语言中).方法,面向对象(Python中).属于某个人私有的.函数是公共的.二者本质上一样的实现思想.

    存储多个数据,每个数据称之为元素.
    格式:[元素1,元素2...]
    列表中尽可能存储同类型数据,且代表的含义要一致.实际上可以存储不同类型的数据.

    1.增加元素:

    list1 = [1, 2, 3]
    list1.append("大爷哟")  # 元素添加到列表尾部

    2.插入元素:

    list1 = [1, 2, 3]
    list1.insert(0, '王五')  # 根据索引插入到指定位置,原来的元素依次向后移一位

    3.合并列表:

    list1 = [1, 2, 3]
    list2 = ['水手', '司机']
    list1.extend(list2)  # extend:扩展,将list2列表中的元素放到list1中

    4.删除元素:

    list1 = [1, 2, 3]
    list1.remove(1)  # remove(指定元素)直接删除指定元素
    list1 = [1, 2, 3, '水手', '菠菜']
    del list1[4]  # del()根据索引删除指定元素
    list1 = ['张珊', '李四', '王五']
    print(list1.pop())  # 默认是弹出最后一个元素
    print(list1.pop(1))  # 删除指定索引元素,并且把删除的元素返回,使用print()函数可以查看删除的元素是啥

    注意:pop()弹出指定索引的元素之后,原来list的索引发生相应改变
    形如:这样的 class list def pop(self, index: int = -1) Inferred type: (self: 
    list, index: 
    int) -> TypeVar('_T')
    出现 -> 后面有东西,说明这个函数是有返回值的.意思就是可以将这个值赋值给一个变量,并显示出来.

    5.清空列表:

    list1 = ['张珊', '李四', '王五']
    list1.clear()  # 清空列表

    6.修改列表:

    list1 = ['张珊', '李四', '王五']
    list1[0] = 'ml'  # 就是把指定索引位置的元素重新赋值了

    7.查询指定元素:

    list1 = ['张珊', '李四', '王五']
    name = list1[1]  # 查询索引为1的元素

    8.查询元素对应的索引(即位置):

    list1 = ['张珊', '李四', '王五','','','']
    index1 = list1.index('王五',1, 5)  # 控制查找范围(1,5),意思就是从索引1开始查找,一直查到索引为5的位置(不包括5)

    9.统计元素出现的次数,计数功能:

    list1 = ['张珊', '李四', '王五','','','','','']
    count1 = list1.count('')  # 统计元素出现次数

    10.获取列表长度(即包含的元素的总数):

    list1 = ['张珊', '李四', '王五','','','','','']
    print(len(list1))  # 获取list长度,即获取元素总个数

    11.某元素是否存在于列表中:

    list1 = ['张珊', '李四', '王五','','','','','']
    if '张珊' in list1:
        print('')
    else:
        print('不在')

    12.列表排序:

    list1 = [2, 3, 1, 4]
    # key 用来指定排序规则
    # reverse 控制升降序
    list1.sort()  # 默认是升序
    print(list1)
    list1 = [2,3,1,4]
    list1.sort(reverse=True)
    print(list1)
    
    list2 = ["5", 2, 1, "4", 3]
    list2.sort(key=int)  # 让列表中元素在比大小时,按整数类型比较,只是在比较过程中将"5"这个字符 当成数字5
    print(list2)
    
    list3 = ["zhangsan", "lisi", "wangwu"]
    list3.sort(key=len)
    print(list3)
    list3.sort(key=len, reverse=True)  # 按照字符串长度比较大小,让列表中的元素以字符串长度排序
    print(list3)
    list1.reverse()  # 让列表中的元素进行反转,倒置
    print(list1)
    
    
    # Python内置库排序演示
    import keyword
    print(keyword.kwlist)

    13.遍历列表:

    list1 = ["zhangsan", "lisi", "ww", "ml"]
    # 从头到尾取出列表中每个元素称之为遍历
    
    # while方式遍历
    i = 0
    while i < len(list1):  # 写的灵活变通
        element = list1[i]
        print(element)
        i += 1
    print(list1[0])
    
    # for循环方式遍历
    
    # for 专门为了对列表类型进行遍历
    for element in list1:  # 自动从0索引开始进行循环,一直到最后一个索引的值(直到取不出来元素了)
        print(element)
    print('完成!')
    # for循环本质是一个迭代器,只要能一个一个的取出就是迭代
    # 无限循环才会用while True
    
    # 所有程序都是无限循环,除非遇到bug自动重启了这种问题
    while True:
        break  # 跳出循环
    
    # 列表嵌套(二维列表),一般二维的列表,
    # 循环嵌套配合列表嵌套使用

    14.列表嵌套:

    """8个老师随机分配到3个教室"""
    import random
    
    # 定义一个列表变量,表示老师
    teachers = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']  # 每个老师只分配一次
    # office1 = []
    # office2 = []
    # office3 = []
    # 优先顺序:保证功能实现
    school = [[], [], []]  # 表示学校,学校里面有3个小办公室
    # 1.遍历老师列表
    for name in teachers:  # 安排老师是有顺序的,name是从A开始一直到H的
        # index = random.randint(0,(len(school) - 1))  # 随机数直接从0开始产生,因为0代表了索引位置的起始位置,这样会少了一部计算
        # office = school[index]  # 获取某个办公室列表
        # office.append(name)  # 把老师添加到办公室中 警告信息提示类型推导不一致
        school[random.randint(0, len(school) - 1)].append(name)
    print(school)
    
    # 2.遍历学校列表,取出每一个办公室列表
    i = 1  # 计数变量表示第几个办公室
    for office in school:
        print("第%d个办公室有%d个老师" % (i, len(office)))
        i += 1
        # 2.1 遍历办公室的小列表,取出办公室中的每个老师
        for name in office:
            print(name)
    
    # 外循环代表了行,内循环代表了列,下面的3行6列
    # [['B'],
    #  ['H'],
    #  ['A', 'C', 'D', 'E', 'F', 'G']]
    # 为了不让教室出现空的情况,需要加if进行判断,只要保证每个教室的长度<3就可以.即判断到有教室的长度为3时,就不再往这个教室添加老师
  • 相关阅读:
    ubuntu上安装nginx+mysql+php5-fpm(PHP5
    创建内存盘
    ubuntu上安装apache2+mysql+php5-fpm(PHP5
    Cubieboard Linaro 搭建超节能监控平台
    CubieBoard开发板数据源介绍
    如何在github创建个人主页?
    android studio配置git
    greenDao使用时遇到的坑
    FragmentManager is already executing transactions
    AndroidSchedulers.mainThread()无法切换到主线程,原来是细节问题啊
  • 原文地址:https://www.cnblogs.com/huaibin/p/12095386.html
Copyright © 2011-2022 走看看