第三、四章 列表和操作列表

目录

3.1 列表是什么

3.1.1 列表的定义

3.1.2 索引从0开始

3.1.3 使用列表的值

3.1.4 获得列表值的索引

3.2 修改、添加和删除列表元素及对列表元素排序、倒转、切片

3.2.1 修改列表元素及修改二阶列表元素

3.2.2 添加、删除列表元素、计算列表值的数量

3.2.3 对列表元素进行排序、倒转

3.2.4 对列表元素进行切片


3.1 列表是什么

3.1.1 列表的定义

first_list = [] # 空列表
second_list = [1, 2, 'potato']
third_list = list(range(1,4))
print(second_list)  # [1, 2, 'potato']
print(third_list)   # [1, 2, 3]

3.1.2 索引从0开始

3.1.3 使用列表的值

print(second_list[2]) # potato
print(second_list[2].title()) # Potato

3.1.4 获得列表值的索引

nums = [1, 3, 5, 7]
j = 5
print(nums.index(j))    # 输出:2
print(nums.index(j, 0, 1))    # 出错
# 第二个和第三个参数表示搜索的索引范围

3.2 修改、添加和删除列表元素及对列表元素排序、倒转、切片

3.2.1 修改列表元素及修改二阶列表元素

def list_study1():  
    list1 = [1,2,3,4,5]    # 一阶列表,利用索引修改
    list1[4] = 10
    print(list1)    # [1,2,3,4,10]

    stu1 = [0]*5    # 定义二阶列表
    print(stu1)     # [0, 0, 0, 0, 0]
    stu2 = [[0]*3]*4    # 4个空列表元素的列表
    print(stu2)     # [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

    # 给列表2第一个元素赋值 66,第五个元素赋值88
    stu2[0][0] = 66
    stu2[1][1] = 88    # 直接利用索引不行
    print(stu2)  # [[66, 88, 0], [66, 88, 0], [66, 88, 0], [66, 88, 0]]
    print(id(stu2[0][0]), id(stu2[1][0]), id(stu2[2][0]))  # 地址相同

    # 修改
    stu3 = [([0] * 3) for i in range(4)]
    stu3[0][0] = 66
    stu3[1][1] = 88
    print(stu3)  # [[66, 0, 0], [0, 88, 0], [0, 0, 0], [0, 0, 0]]

3.2.2 添加、删除列表元素、计算列表值的数量

def list_study2():
    stu1 = ['1001', '小米', '男', '20']
    print('学生:', stu1)
    # 1、追加 append() 函数
    stu1.append('南昌')       # stu1: ['1001', '小米', '男', '20', '南昌']
    print('stu1:', stu1)

    # 2、计算x出现次数 count(x)
    list1 = [1, 2, 3, 4, 1]
    print(list1.count(1))       # 2

    # 3、追加一个列表 extend()
    stu2 = ['1002', '小丽', '女', '19']
    stu1.extend(stu2)
    print('stu3:', stu1)        # stu3: ['1001', '小米', '男', '20', '南昌', '1002', '小丽', '女', '19']

    # 4、获取x的位置 index(x)
    index = stu1.index('男')
    print('男的位置:', index)       # 男的位置: 2
    # print('男的位置:', stu1.index('男', 3, 5))   # 出现错误:ValueError: '男' is not in list

    # 5、插入 insert(x,y) 在x位置插入y
    stu1.insert(0, '学生信息')
    print('stu5:', stu1)        # stu5: ['学生信息', '1001', '小米', '男', '20', '南昌', '1002', '小丽', '女', '19']

    # 6、删除 pop(index), remove(x), index位置, x为元素
    list1 = [1, 2, 3, 4, 1]
    list1.pop(2)    # list1.pop()则删除最末尾的元素
    print(list1)    # [1, 2, 4, 1]
    list1.remove(1)
    print(list1)    # [2, 4, 1], remove只删第一个x

3.2.3 对列表元素进行排序、倒转

def list_study3():    
    # 7、倒转 reverse()函数(倒转还可以用切片实现)
    stu3 = ['1001', '小米米', '男', '20']
    stu3.reverse()
    # 或reversed(stu3) 
    print(stu3)     # ['20', '男', '小米', '1001']

    # 8、排序函数 sort(key=none, reverse=False),
    # 默认只对同一种类型排序,升序,none默认直接比较每个元素,可以自定义
    stu3.sort()
    print(stu3)     # ['1001', '20', '小米米', '男']
    stu3.sort(reverse=True)
    print(stu3)     # ['男', '小米米', '20', '1001']
    stu3.sort(key=len)    # 按照长度排序
    print(stu3)     # ['男', '20', '小米米', '1001']
    # 自定义排序
    stu4 = ['1001', '小米米', '男', 20]     # 在这里20为整数

    def cmp(x):
        if type(x) is not str:
            return '0'      # 以’0‘的方式进行比较排序,换成’1002‘,就排第二了
        else:
            return x
    stu4.sort(key=cmp)
    print(stu4)     # [20, '1001', '小米米', '男']
    

def list_study4():
    print('列表其他知识')
    # del stu/stu[], stu.clear()
    # len(list),max(list), min(list)
    # +, * , in 等符号


if __name__ == "__main__":
    # list_study1()       # 定义列表
    list_study2()       # 添加、删除列表元素、计算列表值的数量
    list_study3()       # 对列表进行排序、倒转
    # list_study4()        # 其他知识

3.2.4 对列表元素进行切片

# 切片格式:列表名[start:end:步长]
list1 = [1,2,3,4,5,6,7,8]
list2 = list1[0:7:2]    # 正着索引是0-7
print(list2)    # 输出:[1, 3, 5, 7]

list3 = list1[::-1]    # 切片实现列表倒转
print(list3)    # [8, 7, 6, 5, 4, 3, 2, 1]
print(list1[0:7:-1])    # 输出:[]
# 步长为负数,start和end也只能为负数,逆着切,正数就为空

list4 = list1[-1:-8:-2]    #逆着索引是-1-8
print(list4)    # [8, 6, 4, 2]

本人新手,若有错误,欢迎指正;若有疑问,欢迎讨论。若文章对你有用,点个小赞鼓励一下,谢谢,一起加油吧!

你可能感兴趣的:(Python编程从入门到实践,python)