python基础知识(六):列表

1. 列表及其创建

列表由一系列按特定顺序排列的元素组成,元素可以是整数,浮点数或者是字符串,由[]括起来。
例如:

# 列表
lst = ['hello', 'world', 99]  # 列表
print(lst)
print(type(lst))
print(lst[0], lst[1], lst[2])

上述代码首先创建了列表lst,并且进行打印输出。
在python中,顺序从0开始,上述最后一行代码是一次打印输出列表的第1、2、3个元素。
在这里插入图片描述

列表的创建可以直接用[]括起来进行创建,也可以用list()函数进行创建。

# 列表的创建
lst = ['hello', 'world', 99]  # 列表创建的第一种方式,使用[]
lst_2 = list(['hello', 'world', 99])  # 列表创建的第一种方式,使用内置函数list()
print(lst)
print(lst_2)
print(lst[0], lst[1], lst[2])
print(lst_2[0], lst_2[1], lst_2[2])

在这里插入图片描述

2. 列表的特点

列表的特点是:
(1) 每个元素具有唯一的索引值,也就是每个元素有自己的序号,第一个元素序号为0,从左往右数的顺序是0,1,2,…,从右往左数的顺序是-1,-2,-3,…;
(2) 列表可以存储重复的元素。

# 列表的特点
# 有序排序
lst = ['hello', 'world', 99]  # 列表
print(lst)
# 索引映射唯一数据 lst = ['hello', 'world', 99]里面三个位置是0,1,2逆序是-1,-2,-3
print(lst[0])
print(lst[-3])
# 列表可以存储重复数据
lst_1 = ['hello', 'world', 99, 99]
print(lst_1)

在这里插入图片描述

3. 获取指定元素的索引

使用index()函数可以获取列表元素中指定元素的索引值。
如果列表中有多个相同元素,只返回第一个元素的索引;如果需要获取某个重复元素的索引值,应该限定其范围。

# 获取指定元素的索引
lst_3 = ['hello', 'world', 99, 'hello']
print(lst_3.index('hello'))  # 获取hello的索引
# 如果列表中有多个相同元素,只返回第一个元素的索引
print(lst_3.index('hello', 1, 4))  # 获取hello的索引,在一定的范围内

在这里插入图片描述

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

# 列表的查询
"""正向索引0到N-1,逆向索引从-1开始递减,即-N到-1"""
lst_4 = ['hello', 'world', 99, 'hello', 'world', 99]
print(lst_4[2])  # 获取索引为2的元素
print(lst_4[-3])  # 获取索引为-3的元素

在这里插入图片描述

5. 列表的切片操作

列表的切片操作是获取列表的部分元素或者全部元素,常用方法是:

lst2 = lst1[起始值:终止值:步长]

上述含义是切片开始为起始值,终止为终止值但不到终止值。

# 列表的切片操作,获取多个元素
# 切片的结果是原列表的拷贝
lst_5 = [10, 20, 30, 40, 50, 60, 70, 80]
print(lst_5[1:6:1])  # 切片开始为1,终止为6但不到6,步长为1
# 切出来的是一个新的列表对象
lst_6 = lst_5[1:6:1]
print(id(lst_5))
print(id(lst_6))
print(lst_5[1:6])  # 切片开始为1,终止为6但不到6,默认步长为1
print(lst_5[1:6:2])  # 切片开始为1,终止为6但不到6,步长为2
print(lst_5[:6:2])  # 切片默认开始为0,终止为6但不到6,步长为2
print(lst_5[1::2])  # 切片开始为1,默认终止到N-1包括N-1,步长为2
# 步长为负数
print(lst_5)
print(lst_5[::-1])  # 逆序输出列表
print(lst_5[7::-1])  # 逆序输出列表7开始,步长-1
print(lst_5[6:0:-2])  # 逆序输出列表6开始,步长-2,,到0不包括0

在这里插入图片描述
在这里插入图片描述

6. 列表元素的判断及遍历

判断某一元素是否在列表中,常用in来判断;
列表元素的变量常常用for循环变量

# 列表元素的判断及遍历
lst_7 = [10, 20, 'python', 'hello']
print(10 in lst_7)  # True
print(100 in lst_7)  # False
print(10 not in lst_7)  # False
print(100 not in lst_7)  # True
# 遍历列表中的元素
for i in lst_7:
    print(i)

在这里插入图片描述
在这里插入图片描述

7. 列表元素的添加操作

(1) 列表的末尾添加一个元素用append()函数,增加元素之后还是同一列表。

# 列表的末尾添加一个元素 append()
lst_8 = [10, 20, 30]
print('原列表', lst_8)
lst_8.append(100)
lst_9 = lst_8
print('新列表', lst_9)
print(id(lst_8), id(lst_9))  # 增加元素之后还是同一列表
lst_10 = ['hello', 'python']
lst_8.append(lst_10)
print(lst_8)
# 使用append()只能在列表的末尾添加一个元素,会把['hello', 'python']当成一个元素

在这里插入图片描述
在上述代码中,使用append()只能在列表的末尾添加一个元素,会把[‘hello’, ‘python’]当成一个元素。
(2) 列表的末尾添加至少一个元素用extend()函数

# 列表的末尾添加至少一个元素 extend()
lst_8.extend(lst_10)
print(lst_8)

在这里插入图片描述

(3) 列表的任意位置插入一个元素用insert()函数

# 列表的任意位置插入一个元素 insert()
lst_8.insert(1, 90)  # 索引为1的位置上添加90
print(lst_8)

在这里插入图片描述

(4) 列表的任意位置至少插入一个元素用切片

# 列表的任意位置至少插入一个元素
lst_11 = ['hell0', 'world']
lst_8[1:] = lst_11  # 从1开始后面的数全部切掉,用新的列表替换
print(lst_8)
lst_8[1:1] = lst_11  # 从1开始后面的数全部切掉,用新的列表替换,相当于在1的位置上插入
print(lst_8)

在这里插入图片描述
完整代码:

# 列表元素的添加
# 列表的末尾添加一个元素 append()
lst_8 = [10, 20, 30]
print('原列表', lst_8)
lst_8.append(100)
lst_9 = lst_8
print('新列表', lst_9)
print(id(lst_8), id(lst_9))  # 增加元素之后还是同一列表
lst_10 = ['hello', 'python']
lst_8.append(lst_10)
print(lst_8)
# 使用append()只能在列表的末尾添加一个元素,会把['hello', 'python']当成一个元素
# 列表的末尾添加至少一个元素 extend()
lst_8.extend(lst_10)
print(lst_8)
# 列表的任意位置插入一个元素 insert()
lst_8.insert(1, 90)  # 索引为1的位置上添加90
print(lst_8)
# 列表的任意位置至少插入一个元素
lst_11 = ['hell0', 'world']
lst_8[1:] = lst_11  # 从1开始后面的数全部切掉,用新的列表替换
print(lst_8)
lst_8[1:1] = lst_11  # 从1开始后面的数全部切掉,用新的列表替换,相当于在1的位置上插入
print(lst_8)

8. 列表的删除

(1) 从列表中移除一个元素用remove()函数,如果有重复元素,只移除第一个元素。

lst_12 = [10, 20, 30, 40, 50, 60, 30]
lst_12.remove(30)  # 从列表中移除一个元素,如果有重复元素,只移除第一个元素
print(lst_12)

在这里插入图片描述

(2) 删除指定位置元素用pop()函数,不指定位置时,默认删除最后一个元素

# 删除指定位置元素,不指定位置时,默认删除最后一个元素
lst_12.pop(1)
print(lst_12)
lst_12.pop()
print(lst_12)

在这里插入图片描述

(3) 删除至少一个元素用切片


# 切片,删除至少一个元素,将产生一个新的列表对象
lst_13 = lst_12[1:3]  # 保留原列表1-3但不包括3的元素
print('原列表', lst_12)
print('新列表', lst_13)
lst_12[1:3] = []  # 将列表的1,2的数删除,不产生新的列表
print(lst_12)

在这里插入图片描述
(4) 清除列表的所有元素用clear()函数

# 清除列表的所有元素,clear()
lst_12.clear()
print(lst_12)

在这里插入图片描述
完整代码:

# 列表的删除
lst_12 = [10, 20, 30, 40, 50, 60, 30]
lst_12.remove(30)  # 从列表中移除一个元素,如果有重复元素,只移除第一个元素
print(lst_12)
# 删除指定位置元素,不指定位置时,默认删除最后一个元素
lst_12.pop(1)
print(lst_12)
lst_12.pop()
print(lst_12)
# 切片,删除至少一个元素,将产生一个新的列表对象
lst_13 = lst_12[1:3]  # 保留原列表1-3但不包括3的元素
print('原列表', lst_12)
print('新列表', lst_13)
lst_12[1:3] = []  # 将列表的1,2的数删除,不产生新的列表
print(lst_12)
# 清除列表的所有元素,clear()
lst_12.clear()
print(lst_12)
# 删除列表对象 del

9. 列表元素的修改

修改单个元素是直接对指定索引值的元素进行修改,多个元素修改用切片。

# 列表元素的修改
lst_14 = [10, 20, 30, 40]
# 一次修改一个值
lst_14[2] = 100  # 将索引为2的值修改成100
print(lst_14)
# 修改列表的多个值
lst_14[1:3] = [300, 400, 500, 600]  # 将1-3但不包括3的值修改成300, 400, 500, 600
print(lst_14)

在这里插入图片描述

10. 列表元素的排序

排序用sort()函数,其中sort()函数和sorted()函数的区别在于sort()函数会改变原列表,sorted()函数不会改变原列表。
举个例子:lst = [ 3 2 4]
使用sort()函数,lst会变成lst = [ 2 3 4]
而使用sorted()函数,会产生lst的复制lst1=[ 2 3 4],但是lst不变还是lst = [ 2 3 4]。

# 列表元素的排序
lst_15 = [10, 20, 99, 98, 100]
print('排序前的列表', lst_15, id(lst_15))
# 开始排序,sort(),默认升序排序,不产生新的列表
lst_15.sort()
print('排序后的列表', lst_15, id(lst_15))
# 降序排序 sort(reverse=True),不产生新的列表
lst_15.sort(reverse=True)
print('排序后的列表', lst_15, id(lst_15))
# 升序排序 sort(reverse=False),不产生新的列表
lst_15.sort(reverse=False)
print('排序后的列表', lst_15, id(lst_15))
print('*' * 50)
# 升序排序
lst_15 = [10, 20, 99, 98, 100]
lst_16 = sorted(lst_15)  # 升序排序,产生一个新的列表
print('排序前的列表', lst_15, id(lst_15))
print('排序后的列表', lst_16, id(lst_16))

# 降序排序
lst_15 = [10, 20, 99, 98, 100]
lst_16 = sorted(lst_15, reverse=True)  # 降序排序,产生一个新的列表
print('排序前的列表', lst_15, id(lst_15))
print('排序后的列表', lst_16, id(lst_16))

在这里插入图片描述
在这里插入图片描述

11. 列表生成式

列表生成式是for循环和列表结合的快速生成列表元素的一种方式

# 列表生成式
# 产生1-9的整数列表
lst_17 = [i for i in range(1, 10)]
print(lst_17)
# 产生1-9的整数平方列表
lst_17 = [i * i for i in range(1, 10)]
print(lst_17)

lst_17 = [i for i in range(2, 12, 2)]
print(lst_17)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_47598782/article/details/130995337