• Python语法--列表(类似数组)


    Python中的列表其实就是java的数组形式,包括使用下标访问都是一致的,唯一不同的是Python存储数据时数据类型可以在一个列表中混用,在遍历以及插入数据等都比较方便。

    1.列表定义                                                                                   

    1.1 定义一个空列表

    1. list=[] # 定义一个空数组
    2. print(list)
    3. print(type(list))
    4. # 运行结果:
    5. '''
    6. []
    7. '''

    1.2 混合数据类型列表

    取出第一个类型为int,第二个类型元素为String

    1. list=[1,"小李"] #列表里可以混合类型
    2. print(list[0]) # 取列表元素第一个数据
    3. print(type(list[0])) # 取列表元素第一个数据类型
    4. print(list[1]) # 取列表元素第二个数据
    5. print(type(list[1])) # 取列表元素第二个数据类型
    6. # 运行结果:
    7. '''
    8. 1
    9. 小李
    10. '''

    2.列表增加操作                                                                           

    2.1  append方式

    append追加数据方式

    定义一个名字列表,默认有小王,小李,通过append向后追加小张,增加前遍历打印数组元素,追加后再遍历打印数组元素

    1. namelist=["小王","小李"]
    2. print("----------增加前,名单列表的数据-----------------")
    3. for name in namelist:
    4. print(name)
    5. namelist.append("小张")
    6. print("----------增加后,名单列表的数据-----------------")
    7. for name in namelist:
    8. print(name)
    9. 运行结果:
    10. '''
    11. ----------增加前,名单列表的数据-----------------
    12. 小王
    13. 小李
    14. ----------增加后,名单列表的数据-----------------
    15. 小王
    16. 小李
    17. 小张
    18. '''

    append数组追加数组

    会把列表结果嵌套到一起

    1. a=[1,2]
    2. b=[3,4]
    3. a.append(b)
    4. print(a)
    5. #运行结果: [1, 2, [3, 4]]

    2.2 extend

    extend是指将任何可迭代的元素添加到当前列表的末尾。

    1. a=[1,2]
    2. b=[3,4]
    3. # 用extend把b列表每个元素都加入到a了
    4. a.extend(b)
    5. print(a)
    6. # 运行结果为:[1, 2, 3, 4]

    2.3 insert

    在指定位置插入指定元素数据

    1. a=[0,2,4]
    2. a.insert(1,1)
    3. print(a)
    4. #运行结果:[0, 1, 2, 4]

    3.列表删除元素                                                                           

    3.1 del

    del可以删除某个元素,也可删除变量,删除整个列表则访问变量名称也会报错,

    下面例子删除下标为1的参数也就是列表中的第二个,删除前打印数据,删除后在打印下列表数据

    1. a=[0,1,2,3,4]
    2. print("----------删除前,列表的数据-----------------")
    3. for num in a:
    4. print(num)
    5. del a[1] # del删除指定下标的数据
    6. print("----------删除后,列表的数据-----------------")
    7. for num in a:
    8. print(num)

     1就被删除掉了

    我们把变量a列表删除掉,del a 

    1. a=[0,1,2,3,4]
    2. del a
    3. print("----------删除前,列表的数据-----------------")
    4. for num in a:
    5. print(num)

    在for循环使用a的时候直接报错了,没有定义a变量,其实是del给删除了,切记删除变量后不要使用其变量,

     3.2 pop

    pop没有指定索引则默认弹出末尾最后一个元素,否则删除指定索引

    1. a=[0,1,2,3,4]
    2. print("----------删除前,列表的数据-----------------")
    3. for num in a:
    4. print(num)
    5. a.pop() #弹出末尾最后一个元素
    6. print("----------删除后,列表的数据-----------------")
    7. for num in a:
    8. print(num)

     结果则把最后一个元素删除,如果指定下标,则a.pop(下标)使用

     3.3 remove

    remove可指定删除某个数据中的元素,如果集合中存在一模一样的元素数据,则只删除前面部分

    1. a=[0,1,2,3,4,3]
    2. print("----------删除前,列表的数据-----------------")
    3. for num in a:
    4. print(num)
    5. a.remove(3) # 移除指定元素,两个重复元素,只删除前面的一个
    6. print("----------删除后,列表的数据-----------------")
    7. for num in a:
    8. print(num)

    4.列表修改                                                                                   

     通过下标元素直接更改

    1. a=[0,1,2,3,4]
    2. a[0]=5 # 直接通过下标更改
    3. print(a)
    4. 运行结果:[5, 1, 2, 3, 4]

    5.列表查询                                                                                  

    5.1 in,not in  

    查询除了遍历以外还有in,not in,判断元素是否存在和不存在的操作

    输入一个数字是否存在在a元素里,如果存在进入查找到了数字,否则进入没用查找到数字,

    not in 就不说了不存在就怎么样,可以自己测试

    1. a=[0,1,3]
    2. num=int(input("请输入数字:"))
    3. if num in a :
    4. print("查找到了数字")
    5. else:
    6. print("没有查找到数字")

    运行结果:

     5.2 index

    index查找指定元素出现在哪个下标,返回对应的下标,如下查找a在0下标到3(左闭右开)下标下的数据是否存在a,注意是左闭右开的,所以左边下标准确,右边数字则往前加一个下标则才能得到你想要的结果,优先返回前面范围的结果

    1. a=["a","b","c","d","a","t"]
    2. print(a.index("a",0,4)) # 查询指定下标范围,并返回找到数据对应的下标,左闭右开[1,-3)
    3. # 结果:返回0

      从1下标找到4下标,就会报错,b,c,d里没有a,

    1. a=["a","b","c","d","a","t"]
    2. print(a.index("a",1,4))

     5.3 enumerate函数

    通过enumerate函数遍历列表元素,既可以得到列表的元素下标也可以得到列表中的内容

    1. # 通过enumerate枚举函数同时拿到列表中下标和元素内容
    2. info = ["name", "age"]
    3. print(enumerate(info))
    4. for i,data in enumerate(info):
    5. print(i,data)
    6. # 结果:
    7. '''
    8. 0 name
    9. 1 age
    10. '''

     6.排序、反转                                                                               

    6.1 sort

    sort排序

    1. a=[5,8,1,2]
    2. a.sort() #排序
    3. print(a)
    4. # 结果:[1, 2, 5, 8]

    6.2 reverse

    reverse反转,可以通过sort指定参数进行反转,也可直接调用reverse方法反转,reverse反转元素顺序,通过sort(reverse=True)则将对列表进行降序排序

    1. a=[5,8,1,2]
    2. a.reverse() #反转
    3. print(a)
    4. # 结果:[2, 1, 8, 5]
    1. a=[5,8,1,2]
    2. a.sort(reverse=True) #反转
    3. print(a)
    4. # 结果:[8, 5, 2, 1]

    7.嵌套数组的使用                                                                       

    就是二元数组的使用,通过访问元素的下标,第一个schoolNames[0]则获取第一组全部数据,schoolNames[0][1]则获取第一组第一个数据

    1. # 嵌套数组的使用
    2. schoolNames=[["北京大学","清华大学"],["南开大学","天津大学",],["再次一点大学","一组"]]
    3. print(schoolNames[0])
    4. print(schoolNames[0][1])

    结果:

    课堂练习:

    现有三个办公室,随机分配人员进入不同的房间

    1.首先要有0-2的随机数,需要导入随机数库,代表3个房间

    2.定义办公室,定义进入办公室的人员

    3.随机分配时把人员追加到办公室变量里,最后循环下房间变量

    代码如下:

    1. # 随机分配人员进入不同的房间
    2. import random
    3. offices=[[],[],[]] # 定义办公室
    4. names=["小张","小王","小李","小杜","小钱","小木","小刘","小赵"] # 定义人员
    5. # 遍历人员信息
    6. for name in names:
    7. index=random.randint(0,2) # 生成0-2的随机数,0是第一个房间,1是第二个房间,2是第三个房间
    8. offices[index].append(name) # 往房间添加人员
    9. i=1
    10. for office in offices:
    11. print("办公室%d人数为:%d"%(i,len(office))) # 获取二元数组每组办公室的人员数量(通过len获取长度)
    12. i=i+1
    13. for name in office:
    14. print("%s"%name,end="\t") # 循环获取每个办公室里的人员数据
    15. print("\n")
    16. print("-"*20)

    运行结果为:

     作业:                                                                                                                        

    给你一组商品数据,打印如下的商品列表,让用户输入选择的商品编号,用户输入q则结束选择,并把用户购买的信息打印如下:

     商品信息列表:

    products = [["iphone", 6888], ["MacPro", 14888], ["小米6", 2499], ["Book", 60], ["Nike", 690]]
    

     还蛮简单的小测验,自己可以试着做下,下期给我自己做的答案!

  • 相关阅读:
    无线 LAN 服务概述
    研发过程中的文档管理与工具
    【HMS Core】Android引入Scan Kit导致System.loadLibrary无法使用该如何解决?
    如何快速掌握Vuex
    Weblogic各版本历史
    技巧 | Python绘制2022年卡塔尔世界杯决赛圈预测图
    企业人事管理系统
    金九银十复习这份美团架构师的Java核心面试宝典就够了
    《游戏编程模式》学习笔记(十三)组件模式 Component
    【软考软件评测师】第二十三章 系统安全设计(认证与加密)
  • 原文地址:https://blog.csdn.net/dfBeautifulLive/article/details/126133919