python基础语法(二)列表

往期推荐:
python基础语法(一)range函数



前言

  • 变量可以存储一个元素,列表是一个大容器,可以存储N多个元素,方便对这些数据进行整体操作
  • 相当于其他语言中的数组
  • 变量存储的是一个对象的引用id

一、列表的创建与删除

列表需要使用中括号[],元素之间使用英文的逗号进行分隔
lst = [‘a’,‘b’]

列表的创建方式:

  • 使用中括号 lst = [‘a’,‘b’]
  • 调用内置函数lst() lst2 = lst([‘a’,‘b’])

列表的特点:

  • 列表元素按顺序有序排序
  • 索引映射唯一个数据
  • 列表可以存储重复数据
  • 任意数据类型混存
  • 根据需要动态分配和回收内存

列表索引顺序(7个元素为例):
从前往后:0~6
从后往前:-7~-1(采用负数)
即lst[0]与lst[-7]是同一个元素

二、列表的查询操作

1. 获取列表中指定元素的索引

index():

  • 如果查列表中存在N个相同元素,只返回相同元素中第一个元素的索引
  • 如果查询的元素在列表中不存在,则会抛出ValueError
  • 还可以在指定的start和stop之间进行查找

2. 获取列表中的单个元素

  • 正向索引从0到N-1
  • 逆向索引从-N到-1
  • 指定索引不存,抛出IndexError

代码如下(示例):

lst = ['hello', 'world', 'hello']

print(lst.index('hello'))
# 输出结果 0

print(lst.index('hello', 1, 4))
# 输出结果 2

print(lst.index('hello', 0, 4))
# 输出结果 0

3. 获取列表中的多个元素

列表名[start:stop:step]:

  • 切片的结果:原列表片段的拷贝
  • 切片的范围:[start, stop)
  • step默认为1:简写为[start:stop]

step为正数(从start开始往后计算切片):

  • [:stop:step]切片的第一个元素默认是列表的第一个元素
  • [start::step]切片的最后一个元素默认是列表的最后一个元素

step为负数(从start开始往前计算切片):

  • [:stop:step]切片的第一个元素默认是列表的最后一个元素
  • [start::step]切片的最后一个元素默认是列表的第一个元素

代码如下(示例):

lst = [10,20,30,40,50,60,70,80]

print(lst[1:6:1])
# 输出结果 20,30,40,50,60

print(lst[1:6:2])
# 输出结果 20,40,60

print(lst[:6:2])
# 输出结果 10,30,50

print(lst[1::2])
# 输出结果 20,40,60,80

print(lst[::-1])
# 输出结果 80,70,60,50,40,30,20,10

print(lst[6:0:-2])
# 输出结果 70,50,30

4. 列表元素的查询操作

判断指定元素在列表中是否存在:

  • 元素 in 列表名
  • 元素 not in 列表名

列表元素的遍历:

  • for 迭代变量 in 列表名 :
    操作

三、列表元素的增、删、改操作

1. 列表元素的增加操作

列表元素的增加操作:

  • append():在列表的末尾添加一个元素
  • extend():在列表的末尾至少添加一个元素
  • insert():在列表的任意位置添加一个元素
  • 切片:在列表的任意位置添加至少一个元素
lst = [10,20,30]

lst.append(100)
print(lst)
# 输出结果 [10, 20, 30, 100]

lst2 = ['hello', 'world']
lst.extend(lst2)
print(lst)
# 输出结果 [10, 20, 30, 'hello', 'world']

lst.insert(1, 90)
print(lst)
# 输出结果 [10, 90, 20, 30]

lst3 = [True, False, 'hello']
lst[1:] = lst3
print(lst)
# 输出结果 [10, True, False, 'hello']
# 10后面直接被切掉替换成lst3

2. 列表元素的删除操作

列表元素的删除操作:

  • remove():一次删除一个元素;重复元素只删除第一个;元素不存在抛出ValueError
  • pop():删除一个指定索引位置上的元素;指定索引不存在抛出IndexError;不指定索引,删除列表中最后一个元素
  • 切片:一次至少删除一个元素
  • clear():清空列表,删除列表中的元素
  • del:删除列表,不是删除列表元素,是删除列表!
lst = [10, 20, 30, 40, 50, 60, 30]
lst.remove(30)
print(lst)
# 输出结果 [10, 20, 40, 50, 60, 30]

lst.pop(1)
print(lst)
# 输出结果 [10, 30, 40, 50, 60, 30]

lst.pop()
print(lst)
# 输出结果 [10, 20, 30, 40, 50, 60]
# 不写索引,默认删除最后一个元素

new_lst = lst[1:3]
print('原列表', lst)
print('切片列表', new_lst)
# 输出结果
# 原列表 [10, 20, 30, 40, 50, 60, 30]
# 切片列表 [20, 30]

lst = [10, 20, 30, 40, 50, 60, 30]
lst[1:3] = []
print('切片列表', lst)
# 输出结果
# 切片列表 [10, 40, 50, 60, 30]
# 不产生新的列表对象,删除原列表中的内容

lst.clear()
print(lst)
# []

del lst
print(lst)
# 输出结果 NameError: name 'lst' is not defined
# 列表被删除,不是列表元素被删除,是列表被删除!

3. 列表元素的修改操作

列表元素的修改操作:

  • 为指定索引的元素赋予一个新值
  • 为指定的切片赋予一个新值

指定索引:

lst = [10, 20, 30, 40, 50, 60, 30]
lst[2] = 100
print(lst)
# 输出结果 [10, 20, 100, 40, 50, 60, 30]

指定切片:

lst = [10, 20, 30, 40]
lst[1:3] = [300, 400, 500, 600]
print(lst)
# 输出结果 [10, 300, 400, 500, 600, 40]

四、列表元素的排序

列表元素的排序操作:

  • 调用sort()方法,列表中的所有元素默认按照从小到大的顺序进行排序,可以指定括号里面reverse = True,进行降序排序
  • 调用内置函数sorted(),可以指定reverse = True,进行降序排序,原列表不发生改变

调用sort():

lst = [20, 40, 10, 98, 54]
lst.sort()
print(lst)
# 输出结果 [10, 20, 40, 54, 98]

lst.sort(reverse=True)
print(lst)
# 输出结果 [98, 54, 40, 20, 10]

lst.sort(reverse=False)
print(lst)
# 输出结果 [10, 20, 40, 54, 98]

调用内置函数sorted():

lst = [20, 40, 10, 98, 54]
new_lst = sorted(lst)
print(lst)
print(new_lst)
# 输出结果 [20, 40, 10, 98, 54]
# 输出结果 [10, 20, 40, 54, 98]

new_lst1 = sorted(lst, reverse=True)
print(lst)
print(new_lst1)
# 输出结果 [98, 54, 40, 20, 10]

五、列表生成式

语法格式:

  • [i*i for i in range(1, 10)]
  • i*i 表示列表元素的表达式
  • i 自定义变量
  • range(1, 10)可迭代对象

代码示例:

lst = [i for i in range(1, 10)]
print(lst)
# 输出结果 [1, 2, 3, 4, 5, 6, 7, 8, 9]

lst = [i*2 for i in range(1, 10, 2)]
print(lst)
# 输出结果 [2, 6, 10, 14, 18]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值