Python基础--第七讲 列表

1 序列(sequence)

  • 序列是Python中最基本的一种数据结构。序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)并且序列中的数据会按照添加的顺序来分配索引
  • 数据结构指计算机中数据存储的方式

1.1 序列的分类

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

2 列表(list)

  • 列表是Python中的一个对象
  • 列表的作用
    • 列表中可以保存多个有序的数据
    • 列表是用来存储对象的对象
  • 索引我们可以通过索引(index)来获取列表当中的元素
  • 索引就是元素在列表当中的位置 索引从0开始,列表的第一个位置是0 第二个是1 以此类推
  • 获取列表的长度 是列表的最大索引值+1

print(len(lst))
  • 索引可以是负数
  • 如果索引是负数 则从后向前获取元素 -1表示倒数第一个 -2表示倒数第二个 以此类推

3 切片

  • 切片是指从现有列表中获得一个子列表
  • 通过切片来获取指定的元素
  • 语法: 列表[起始 : 结束 : 步长]
  • 通过切片获取元素时,会包括起始位置的元素,不会包括结束位置的元素
  • 起始位置和结束位置的索引可以不写
    如果省略结束位置, 则会从当前的开始位置一直截取到最后
    如果省略开始位置, 则会从第一个元素截取到结束的元素,但是不包括结束的元素
    如果开始位置和结束位置都省略, 则则会从第一个元素开始截取到最后一个元素
  • 步长表示每次获取元素的间隔,默认是1(可以省略不写)
  • 步长不能是0,但可以是是负数,如果是负数,代表着从列表后向前获取

3 通用操作

  • +可以将两个列表拼接成一个列表
  • *可以将列表重复指定的次数 (注意2个列表不能够做乘法,要和整数做乘法运算)
  • in用来检查指定元素是否在列表当中
    not in 用来检查指定元素是否不在列表当中
  • len() 获取列表中元素的个数
  • max() 获取列表中最大值
  • min() 获取列表中最小值
  • list.index(x[, start[, end]])
    • 第一个参数 获取指定元素在列表中的位置
    • 第二个参数 表示查找的起始位置
    • 第三个参数 表示查找的结束位置
s = ['eggs','eggs','egg','eggs']
print(s.index('egg',1,3))
# 1表示查找的起始位置
# 3表示查找的结束位置
  • list.count(x) 统计指定元素在列表中出现的个数
# s.count(x)  x 在 s 中出现的总次数

s = ['eggs','eggs','eggs','egg']
print(s.count('egg'))

结果1

4 修改列表

  • 通过切片来修改(起始就是给切片的内容重新赋值,但是赋值的内容必须是一个序列)
# 通过切片修改列表
hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']
print('修改前',hero)
hero[2:4] = '1234'
print('修改后',hero)

结果

修改前 ['钢铁侠', '绿巨人', '蜘蛛侠', '黑寡妇', '蚁人', '美国队长']
修改后 ['钢铁侠', '绿巨人', '1', '2', '3', '4', '蚁人', '美国队长']

例子

hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']
print('修改前',hero)
# 向索引为0的位置插入元素
hero[0:0] = ['雷神']
print('修改后',hero)

结果
修改前 ['钢铁侠', '绿巨人', '蜘蛛侠', '黑寡妇', '蚁人', '美国队长']
修改后 ['雷神', '钢铁侠', '绿巨人', '蜘蛛侠', '黑寡妇', '蚁人', '美国队长']

当设置了步长时,序列中元素的个数必须和切片中元素的个数保持一致

# 通过切片修改列表
hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']
print('修改前',hero)
# 修改特定位置的上的元素,把0,2,4位置上的元素换成 雷神
hero[::2] = ['雷神','雷神','雷神']
print('修改后',hero)

结果
修改前 ['钢铁侠', '绿巨人', '蜘蛛侠', '黑寡妇', '蚁人', '美国队长']
修改后 ['雷神', '绿巨人', '雷神', '黑寡妇', '雷神', '美国队长']

又如 修改特定位置的上的元素,把1,3,5位置上的元素换成 雷神

# 通过切片修改列表
hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']
print('修改前',hero)
# 修改特定位置的上的元素,把1,3,5位置上的元素换成 雷神
hero[1::2] = ['雷神'] * 3
print('修改后',hero)

结果
修改前 ['钢铁侠', '绿巨人', '蜘蛛侠', '黑寡妇', '蚁人', '美国队长']
修改后 ['钢铁侠', '雷神', '蜘蛛侠', '雷神', '蚁人', '雷神']

• 通过切片来删除元素
• del list[起始 : 结束]
• list = []

hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']
print('修改前',hero)

# 通过del 删除元素
del hero[2:4]
print('修改后',hero)

结果

修改前 ['钢铁侠', '绿巨人', '蜘蛛侠', '黑寡妇', '蚁人', '美国队长']
修改后 ['钢铁侠', '绿巨人', '蚁人', '美国队长']

5. 遍历列表

5.1 for循环

  • 指的就是将列表中的元素提取出来
  • 通过while循环来遍历列表
hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']
i = 0
# while i < 6: # 需要自己数数,写死了,不方便
while i < len(hero):
    print(hero [i])

    i += 1

结果

钢铁侠
绿巨人
蜘蛛侠
黑寡妇
蚁人
美国队长

一般不像上述这样写

  • 通过for循环来遍历列表
    *注意: for循环的代码块会执行多次,序列中有几个元素就会执行几次。每执行一次就会将序列中的一个元素赋值给变量,所以我们可以通过变量来获取列表中的元素
for s in hero:

    print(s)

结果

钢铁侠
绿巨人
蜘蛛侠
黑寡妇
蚁人
美国队长

5.2 range

  • 参数说明
    • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
range(5)
Out[5]: range(0, 5)

• stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5

list(range(0,4))
Out[6]: [0, 1, 2, 3]

• step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

list(range(1,5,2))
Out[9]: [1, 3]

练习

# 获取列表当中的奇数

lst = [1,2,3,4,5,6,7,8,9]

# 获取列表当中的奇数
for i in range(0,9,2):

    print(lst[i])
结果
1
3
5
7
9
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值