python基础学习(六):列表

在这里插入图片描述

1. 序列

1.1 基本概念

  • 概念:序列是Python中最基本的一种数据结构。用于保存一组有序的数据,所有的数据在序列中都有一个唯一的位置(索引)并且序列中的数据会按照添加的数据来分配索引
  • 数据结构:计算机数据的存储方式
  • 类型:字符串、列表、字典、元组、集合

1.2 序列的分类

  • 可变序列(序列中的元素可以改变):列表(list)、字典(dict)
  • 不可变序列(序列中的元素不能改变):字符串(str)、元组(tuple)、集合(set)

2. 列表

  • 列表是Python中的一个对象
  • 列表的作用
    • 列表中可以保存多个有序的数据
    • 列表是用来存储对象的对象

2.1 列表的使用

  • 列表的创建:通过[ ] 创建一个空列表,如果要添加元素,通过, 隔开
# 列表可以保存任意的对象
# list = [1,2,3,4,5]
list = [1,2,'hello',True,[4,5,6],None]
print(list, type(list))
  • 输出:
[1, 2, 'hello', True, [4, 5, 6], None] <class 'list'>
  • 列表的索引:我们通过索引(index)来获取列表中的元素,索引是从0开始的
list = [1,2,3,4,5]
print(list[0])
  • 输出:
1
  • 如果超出索引值,就报错
list = [1,2,3,4,5]
print(list[5]) 
# IndexError: list index out of range
  • 索引也可以是负数:-1表示最后一个,-2表示倒数第二个,以此类推,但不能超过索引值
list = [1,2,3,4,5]
print(list[-1])
print(list[-2])
  • 输出:
5
4
  • 获取列表的长度:len()函数
list = [1,2,3,4,5]
# 获取列表的长度其实就是列表最大索引值 + 1
print(len(list))
  • 输出:
5
  • 注意:获取列表的长度其实就是列表最大索引值 + 1

2.2 切片

  • 概念:切片是从现有列表中获取一个子列表,通过切片可以获得指定的元素
  • 语法:[开始 : 结束 : 步长]
  • 通过切片获得指定的元素时,会包含起始位置的元素,不会包含结束位置的元素
  • 示例:
hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']
print(hero[0:2])
  • 输出:
['钢铁侠', '绿巨人']
  • 如果省略结束位置,会从当前的开始位置一直截到最后
hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']
print(hero[1:])
['绿巨人', '蜘蛛侠', '黑寡妇', '蚁人', '美国队长']
  • 如果省略开始位置则会从第一个元素截取到结束位置,但是不包括结束位置的元素
hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']
print(hero[:3])
['钢铁侠', '绿巨人', '蜘蛛侠']
  • 如果开始位置和结束位置都省略,则会从第一个元素截取到最后
hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']
print(hero[:])
['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']
  • 步长表示每次获取元素的间隔,默认值为1,可以省略
print(hero[0:5:1])
print(hero[0:5])
['钢铁侠', '绿巨人', '蜘蛛侠', '黑寡妇', '蚁人']
  • 步长为2
print(hero[::2])
['钢铁侠', '蜘蛛侠', '蚁人']
  • 步长可以为负数
print(hero[::-2])
['美国队长', '黑寡妇', '绿巨人']
  • 但是步长不能为0
print(hero[::0]) # ValueError: slice step cannot be zero

3. 通用操作

  • +和 *
  • +:可以将两个列表拼接成一个列表
list = [1,2,3] + [4,5,6]
print(list)
[1, 2, 3, 4, 5, 6]
  • *:和整数相乘就可以吧列表重复指定的次数,但是不能两个列表相乘
list = [1,2,3] * 2
print(list)
list = [1,2,3] * [4,5,6] # TypeError: can't multiply sequence by non-int of type 'list'
  • in和not in
    • in:用来检测指定的元素是否在列表中,如果在就返回True,不在返回False
hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']
print('钢铁侠' in hero)
True
  • not in:用来检测指定的元素是否不在列表中,如果不在就返回True,在返回False
hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']
print('绿巨人' not in hero)
False
  • min():获取列表的最小值
  • max():获取列表的最大值
  • list.index():获取指定元素在列表中的位置
hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']
print(hero.index('蜘蛛侠'))
2
  • list.count():统计指定元素在列表中出现的次数
hero2 = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','蜘蛛侠','美国队长']
print(hero2.count('蜘蛛侠'))
2

4. 修改列表

  • 通过索引
hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','蜘蛛侠','美国队长']
hero[0] = '超人'
  • 通过索引修改钢铁侠为超人
['超人', '绿巨人', '蜘蛛侠', '黑寡妇', '蚁人', '蜘蛛侠', '美国队长']
  • 通过del() 删除元素
del hero[2]
  • 将索引 2 的蜘蛛侠删除
['钢铁侠', '绿巨人', '黑寡妇', '蚁人', '蜘蛛侠', '美国队长']
  • 通过切片
hero[:2] = ['雷神']
['雷神', '蜘蛛侠', '黑寡妇', '蚁人', '蜘蛛侠', '美国队长']
  • 代表向索引为0的位置插入元素
hero[0:0] = ['雷神']
['雷神', '钢铁侠', '绿巨人', '蜘蛛侠', '黑寡妇', '蚁人', '蜘蛛侠', '美国队长']
  • 如果传递的不是一个序列,就会报错
hero[:2] = 1234
TypeError: can only assign an iterable
  • 当设置了步长,序列中元素的个数必须与切片中元素的个数一致
hero[::2] = ['雷神','灭霸','奇异博士','格鲁特']
['雷神', '绿巨人', '灭霸', '黑寡妇', '奇异博士', '蜘蛛侠', '格鲁特']
  • 通过切片可以删除元素
hero[1:3] = []
['钢铁侠', '黑寡妇', '蚁人', '蜘蛛侠', '美国队长']
  • 不可变序列修改元素
    • 字符串不是可变序列,无法直接更改元素,可以将类型转化为list
s = 'python'
s = list(s)
s[1] = 'j'
print(s)
['p', 'j', 't', 'h', 'o', 'n']

5. 列表的方法

  • append():向列表的最后添加一个元素
hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','蜘蛛侠','美国队长']
hero.append('灭霸')
['钢铁侠', '绿巨人', '蜘蛛侠', '黑寡妇', '蚁人', '蜘蛛侠', '美国队长', '灭霸']
  • insert(arg1, arg2):向列表的指定位置插入一个元素;arg1:要插入的索引位置,arg2:要插入的元素
'钢铁侠', '绿巨人', '蜘蛛侠', '卡魔拉', '黑寡妇', '蚁人', '蜘蛛侠', '美国队长']
  • extend():传入一个序列,扩展当前的序列
hero.extend('abc')
['钢铁侠', '绿巨人', '蜘蛛侠', '黑寡妇', '蚁人', '蜘蛛侠', '美国队长', 'a', 'b', 'c']
  • clear():清空列表
hero.clear()
[]
  • pop():根据索引删除元素并返回指定元素
    • 如果不加索引,删除最后一个元素
result = hero.pop(1)
print(result)
绿巨人
['钢铁侠', '蜘蛛侠', '黑寡妇', '蚁人', '蜘蛛侠', '美国队长']
  • remove():删除指定元素,如果相同值的元素有多个,只会删除第一个
hero.remove('蜘蛛侠')
['钢铁侠', '绿巨人', '黑寡妇', '蚁人', '蜘蛛侠', '美国队长']
  • reverse():反转列表
hero.reverse()
['美国队长', '蜘蛛侠', '蚁人', '黑寡妇', '蜘蛛侠', '绿巨人', '钢铁侠']
  • sort():对列表中的元素进行排序,默认升序
list = list('fdngknbntihln')
list.sort() 
['b', 'd', 'f', 'g', 'h', 'i', 'k', 'l', 'n', 'n', 'n', 'n', 't']
  • 如果需要降序:reverse=True
list.sort(reverse=True) 
['t', 'n', 'n', 'n', 'n', 'l', 'k', 'i', 'h', 'g', 'f', 'd', 'b']

6. 遍历列表

6.1 for 循环

  • 通过for 循环来遍历列表
# 语法
for 遍历 in 序列:
    代码块
  • 注意:for 循环的代码会执行多次,序列中有几个元素就会执行几次。每执行一次就会将序列中的一个元素赋值给变量
hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','蜘蛛侠','美国队长']
for i in hero:
    print(i)
钢铁侠
绿巨人
蜘蛛侠
黑寡妇
蚁人
蜘蛛侠
美国队长

6.2 range(start,stop[, step])

  • start:默认为0,可以省略,range(5)等价于range(0,5)
  • stop:不包括结束,range(0,5)的结果为[0, 1, 2, 3, 4]
  • step:默认为1,range(0,5)等价于range(0,5,1),结果为[0, 1, 2, 3, 4]
  • 示例:
# 获取列表中的奇数,用for 遍历
list = [1,2,3,4,5,6,7,8,9]
for i in range(0,9,2):
    print(list[i])
1
3
5
7
9
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值