列表的内置方法:

    #1. 列表的声明方式
    list0 = list()  #空列表: 列表存在 但是没有元素  ===> []
    print(list0)
    
    list0 = list("abcdefg")
    print(list0)
    ['a', 'b', 'c', 'd', 'e', 'f', 'g']
    
    list0 = list([12, 34, 56])
    print(list0)
    
    list0 = list((23, 45, 67))
    print(list0)
    
    #只将字典中的键存放于列表中
    list0 = list({"语文":87, "数学":22})
    print(list0)
    ['语文', '数学']
    
    set0 = {45, 67, 87, 24, 45}
    print(set0)
    {24, 67, 45, 87}
    
    list0 = list({45, 67, 87, 24, 45})
    print(list0)
    [24, 67, 45, 87]
    
    #字面量形式声明
    list0 = [12, 45, 67]
    print(list0)
    [12, 45, 67]
    
    #在列表中的运算符操作
    # 加法运算 ---> 将两个列表的元素叠加在一起 存放到一个新的列表中
    list1 = [23, 22, 12]
    list2 = [90, 80, 70]
    new_list = list1 + list2
    print(new_list)
    print(list1)
    print(list2)
    [23, 22, 12, 90, 80, 70]
    [23, 22, 12]
    [90, 80, 70]
    
    
    #取地址
    list1 = [11, 12]
    list2 = [11, 12]
    print(id(list1))
    print(id(list2))
    38873096
    38873352 #他俩地址不一样
    
    #比较的是元素内容  !=
    res = list1 == list2
    print(res)
    True
    
    a = 10
    b = 10
    print(id(a))
    print(id(b))
    1694461232
    1694461232
    
    list1 = [11, 12]
    list2 = [11, 12, 13]
    # 将两个列表中的元素一一进行比较  >   <=  <
    res = list1 >= list2
    print(res)
    False
    
    list1 = [11, 12]
    res = list1 * 3  # 生成的是新的列表
    print(res)
    print(list1)
    [11, 12, 11, 12, 11, 12]
    [11, 12]
    
    list0 = [77, 88, 66, 22, 44, 55, 66]
    #3. 获得列表的元素个数
    length = len(list0)
    print(length)
    
    #脚标从0-6  还可以通过负值来获取  -len(list0)  -1
    #4. 根据脚标操作列表中的元素 格式: 序列名[脚标]
    #获取元素
    value = list0[0]
    print(value)
    
    #value = list0[-length-1]  #IndexError: list index out of range
    #print(value)
    
    #根据脚标 修改对应位置的元素
    list0[0] = 99
    print(list0)
    
    #遍历元素
    for item in list0:
        print(item)
    print("________________")
    #通过脚标进行遍历
    for i in range(length):
        print(list0[i])
    print("________________")
    
    #获得列表中的最大值
    max_value = max(list0)
    print(max_value)
    
    list1 = ["hello", "nice", "you", "beautiful"]
    max_value = max(list1, key=len)
    print(max_value)
    
    
    #在列表中追加元素  直接影响原列表
    list1 = ["hello", "nice", "you", "beautiful"]
    list1.append("very")
    print(list1)
    
    # 在指定位置添加元素
    list1 = ["hello", "nice", "you", "beautiful"]
    list1.insert(0, "good")
    print(list1)
    
    # 合并其他序列 : 会将序列中每一个元素合并到原列表中
    list1 = ["hello", "nice", "you", "beautiful"]
    list1.extend("你好")
    print(list1)
    list1.extend(["big", "little", "light"])
    print(list1)
    ['good', 'nice', 'you', 'beautiful', 'very', '你', '好', 'big', 'little', 'you']
    
    #删除列表元素
    #删除末尾元素
    item = list1.pop()
    print(list1)
    print(item)
    
    #删除指定位置的元素
    item = list1.pop(1)
    print(item)
    print(list1)
    
    #删除元素: 如果有重复的 删除的是第一次出现的
    list1.append("you")
    print(list1)
    
    # list1.remove("you")
    # print(list1)
    
    #获的某个元素在列表中出现的次数
    num = list1.count("you")
    print(num)
    
    
    #列表中是可以存在重复元素的 去除重复的元素 只保留1个
    list0 = [12, 34, 56, 32, 15, 12, 45, 34, 12]
    # ====> [12, 34, 56, 32, 15, 45]
    
    #元素顺序可能会发生变化
    res = set(list0)
    print(res)
    list2 = list(res)
    print(list2)
    
    #声明一个空的列表 用于保存无重复元素的数据
    no_empty_list = []
    #遍历原列表
    for item in list0:
        #不存在与空列表中 才放进去
        if item not in no_empty_list:
            no_empty_list.append(item)
    print(no_empty_list)
    
    print(list1)
    #提取子列表  -- 切片  [start:stop:step]
    
    #跳跃取值 -- 设置步长
    sub_list = list1[::2]
    print(sub_list)
    
    #提取 2-7之间元素 并将其反转
    sub_list = list1[7:1:-1]
    print(sub_list)
    
    #整体逆向
    sub_list = list1[::-1]
    print(sub_list)
    
    
    #系统提供了一个反转的方法
    list1.reverse()
    print(list1)
    
    list0 = [34, 56, 19, 71, 27, 85, 63]
    #对列表中的元素进行排序 #将数据升序或者降序
    #默认是升序的
    list0.sort()
    print(list0)
    #降序
    list0.sort(reverse=True) #reverse控制升序降序  默认是升序 值为False
    print(list0)
    
    #默认的排序是根据大小进行排序的
    list0 = ['you', 'little', 'big','very', 'beautiful']
    list0.sort()
    print(list0)
    
    #按照字符串长度进行排序
    list0.sort(key=len, reverse=True)
    print(list0)
    
    
    list0 = list() # ===> list0 = []
    print(list0)
    

获得列表中的最大数(max()):

    #系统方法max()
    def get_max(src_list):
    
        #先声明一个变量 记录列表中的最大值 假设第一个元素是最大的
        max_value = src_list[0]
    
        for item in src_list:
            if item > max_value:
                max_value = item
    
        return max_value
    
    res = get_max([12, 34, 56, 17, 99, 78, 65])
    print(res)
    
    
    def get_max_2(src_list):
        #声明一个变量 记录最大值 假设第一个元素是最大的
        max_value = src_list[0]
        #通过脚标来进行遍历
        for i in range(1, len(src_list)):
            if src_list[i] > max_value:
                max_value = src_list[i]
        return max_value
    
    
    res = get_max_2([12, 34, 56, 17, 99, 78, 65])
    print(res)
    
    #找到最值的索引 通过索引找到元素
    def get_max_3(src_list):
        #声明一个变量 记录最大值 假设第一个元素是最大的
        max_index = 0
        #通过脚标来进行遍历
        for i in range(1, len(src_list)):
            if src_list[i] > src_list[max_index]:
               max_index = i
        return src_list[max_index]
    
    res = get_max_3([12, 34, 56, 17, 99, 78, 65])
    print(res)

得到指定功能的字符串(max(list0,key=)):

    max(list0,key=)
    '''
    ["hello", "nice", "you", "beautiful"]
    按照字符串的长度进行比较
        -- 新生成一组比较的数据: 存放的是每个元素的长度
        [5, 4, 3, 9]
    得先找到最大长度 ----> 最大的长度找到原列表中的元素
    根据索引来找方便一些
    '''
    def cus_max(src_list, key=None):
        #声明一个列表 存放进行比较的元素数据
        # 如果key==None  进行比较的元素就原列表中的元素  否则 先赋予一个空列表
        compare_list = src_list if key == None else []
        #如果 key != None 将列表中每一个元素 作用于key 或的进行比较的数据 并将数据存放于空的列表中
        if key != None:
            #遍历列表
            for item in src_list:
                value = key(item)
                #将返回的数据存放于空的列表中
                compare_list.append(value)
        #要在compare_list列表中 找到最值的下标
        #假设 第一个元素是最大的
        max_index = 0
        for i in range(1, len(compare_list)):
            if compare_list[i] > compare_list[max_index]:
                max_index = i
    
        #根据最值脚标找到原串中对应的元素
        return src_list[max_index]
    
    
    list0 = ["hello", "nice", "you", "beautiful"]
    res = cus_max(list0, key=len)
    print(res)

三种排序算法:

    1.冒泡排序:
    	规则:
    		将列表中的元素每一次从左到右取元素两两进行比较 如果前者>后者 两者交换位置

    list0 = [55, 23, 71, 95, 48, 22]
    a = 10
    b = 11
    a , b = b, a
    #控制一下遍历的次数
    for out in range(1, len(list0)):
        #内层控制列表的遍历
        for i in range(len(list0) - out):
            if list0[i] > list0[i + 1]:
                list0[i], list0[i + 1] = list0[i + 1], list0[i]
        #print(list0)
    
    print(list0)

    2.选择排序:
    	规则:
    		第一次遍历:
    			取第一个位置的元素与之后每一个位置的元素进行比较  -- 获得最小值
    		第二次遍历:
    			取第二个位置的元素与之后每一个位置的元素进行比较  -- 获得次小值
    		...
    		排序结束

    #选择排序
    list1=[22,55,88,44,11,56]
    for i in range(1,len(list1)):
        for j in range(i,len(list1)):
            if list1[i-1]>list1[j]:
                list1[i-1],list1[j] = list1[j],list1[i-1]
    print(list1)

    3.插入排序:
    	部分有序的效果
    	规则:
    		第一次遍历
    			从脚标为1的元素 向前 两两元素进行比较  如果后者 < 前者 交换位置
    		第二次遍历
    			从脚标为2的元素 向前 两两元素进行比较  如果后者 < 前者 交换位置
    		第三次遍历
    			从脚标为3的元素 向前 两两元素进行比较  如果后者 < 前者 交换位置
    		...
    		排序结束

    list0 = [55, 23, 71, 95, 48, 22]
    for out in range(1, len(list0)):
        for i in range(out, 0, -1):
            if list0[i] < list0[i - 1]:
                list0[i], list0[i - 1] = list0[i - 1], list0[i]
            else:
              #因为插入排序从后向前 导致部分有序  比较的时候不满足上面条件 代表这一次遍历顺序已经拍好了 终止这一次遍历
                break
    print(list0)

二分法查找:

    def half_search_desc(src_list, key):
        src_list.sort(reverse=True) # 大 ---> 小
        min_index = 0
        max_index = len(src_list) - 1
        mid_index = (min_index + max_index) // 2
    
        #判定区间是否合理进行查找
        while max_index >= min_index:
    
            if key > src_list[mid_index]:
                max_index = mid_index - 1
            elif key < src_list[mid_index]:
                min_index = mid_index + 1
            else:
                #代表找到了
                return mid_index
    
            #区间更改之后 更新中间索引
            mid_index = (min_index + max_index) // 2
    
        else:
            #区间不合理
            return -1