基础语言-第六天-列表

本文详细介绍了Python编程中列表的基本操作,包括定义列表、通过下标和切片进行查找、遍历元素的方法,以及如何进行增加、删除和修改元素的操作。示例代码涵盖各种常见用法,帮助读者深入理解Python列表的使用。

列表

一、定义

  • 列表是容器类数据类型,将[]作为容器的标志,里面多个数据用逗号隔开:[数

    据1,数据2,数据3,…]

    list2 = [10, 20, 30, 50]
    
  • 列表是可变的(可变指的是容器中元素的个数和值可变 - 支持增删改)

    列表有序(支持下标操作) - 顺序影响结果

  • 元素的要求:没有要求(任何类型的数据都可以作为列表的元素,同一个列

    表中的元素类型可以不一样)

    # 列表中的元素可以使任何类型的数据
    list3 = [10, 1.23, False, None, 'abc', [10, 20]]
    

    空列表用[]

二、查操作

  • 查单个元素 - 一次获取一个数据

    1. 语法:

      列表[下标] - 获取指定列表中指定下标对应的元素

    2. 说明:

      • 列表 - 需要获取元素的列表(可以使任何结果是列表的表达式,比

        如:保存列表的变量、具体的列表数据等)

      • [] - 固定写法3)下标 - 下标又叫索引,是列表中元素在列表中的

        位置信息, 列表中的每个元素都有两个索引值,一个是从前往后从

        0(第一个)开 始不断增加;另一个是从后往前从-1(倒数第一

        个)开始不断减小

    3. 注意:下标不能越界

    nums = [100, 98, 78, 99, 50]
    print(nums[1], nums[-4])   # 98 98
    print(nums[-1])   # 50
    # 越界报错
    # print(nums[5])  # IndexError: list index out of range
    
  • 切片 - 一次获取多个元素

  1. 语法:

列表[开始下标:结束下标:步长] - 根据下标和步长获取指定列表中的部分元素

1)怎么确定切片结果

​ 第一步:确定结果是否为空列表(看从开始下标到结束下标的方向和步长对

应的方式是否一致);如果方向一致结果一定不为空,反之结果肯定是空

​ 步长为正:表示从前往后取;步长为负:表示从后往前取

​ 第二步:确定有效范围 - 从开始到结束,开始下标对应的元素取得到,结束下

标对应的元素取不到

​ 第二步:在有效范围内。按照步长的绝对值确定获取内容。

​ 如果绝对值为1,在有效范围内容一个一个按顺序获取

​ 如果绝对值是2,在有效范围内容内取1个跳1个再取1个

​ 如果绝对值是3,在有效范围内容内取1个跳2个再取1个

​ …

2)怎么写切片

​ 第一步:确定开始下标(目标对象的第一个元素对应的下标)

​ 第二步:确定步长 确定正负号:看目标元素在原列表中的顺序是从前往后

(+)还是从后往前(-)

​ 第三步:确定结束下标(保证所有需要的元素都能取到)

heroes = ['王昭君', '孙斌', '李白', '百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信', '妲己']
print(heroes[1:4])    # ['孙斌', '李白', '百里守约']
  • 遍历 - 一个一个的获取列表中所有的元素
  1. 方法1:

for 变量 in 列表:

​ 循环体中的变量直接是列表的元素

  1. 方法2:通过遍历下标来遍历列表

for 变量 in range(len(列表)):

​ 循环体变量获取到的是每个元素的下标,然后通过下标获取元素

  1. 方法3:

for 变量 in enumerate(games):

​ 循环体变量获取到的是每个元素的下标,然后通过下标获取元素

# 方法1
games = ['王者荣耀', 'lol', '永劫无间', '和平精英', 'apex', '2k', '植物大战僵尸', '开心消消乐']
for i in games:
    print(i)
print('---------------分割线--------------------')
print(len(games))

# 方法2
print('---------------分割线--------------------')
for index in range(len(games)):
    print(index, games[index])

# 方法3
for index, item in enumerate(games):
    print(index, item)

三、增删改操作

  • 增 - 添加元素
  1. 列表.append(元素) - 在列表的最后添加指定元素
nums = [10, 20, 30]
print(nums)    # [10, 20, 30]

nums.append(100)
print(nums)    # [10, 20, 30, 100]
  1. 列表.insert() - 在列表指定下标对应元素前插入指定数据
nums = [10, 20, 30]
print(nums)    # [10, 20, 30]

nums.insert(-1, 100)
print(nums)    # [10, 20, 100, 30]

nums.insert(0, 200)
print(nums)    # [200, 10, 20, 100, 30]
  • 删 - 删除元素
  1. del 列表[下标] - 删除列表中指定下标对应的元素
games = ['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
print(games)

del games[2]
print(games)
结果:
['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
['王者荣耀', 'lol', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
  1. 列表.remove(元素) - 删除列表中指定元素(如果不存在会报错;如果元素有多个,只会删除最前面的哪一个)
games = ['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
print(games)

games.remove('和平精英')
print(games)
结果:
['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
['王者荣耀', 'lol', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
  1. pop

列表.pop() - 取出列表最后一个元素,并且返回

列表.pop(下标) - 取出列表指定下标对应的元素,并且返回

games = ['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
print(games)
x = games.pop()
print(games, x)

x = games.pop(1)
print(games, x)
结果:
['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸'] 开心消消乐
['王者荣耀', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸'] lol
  • 改 - 修改元素的值

列表[下标] = 新元素

games = ['王者荣耀', '开心消消乐', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
print(games)

games[0] = '部落冲突'
print(games)

games[-1] = '炉石传说'
print(games)
结果:
['王者荣耀', '开心消消乐', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
['部落冲突', '开心消消乐', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
['部落冲突', '开心消消乐', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '炉石传说']
  • 案例
# 案例:将scores中所有不及格的分数全部修改成"重修"
scores = [89,23, 79, 99, 45, 60, 78, 59]
# [89,'重修",79, 99,'重修",60,78,'重修"门
for index, item in enumerate(scores):
    if item < 60:
        scores[index] = '重修'
print(scores)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值