Python基础:对Python列表(list)的详细用法

目录

一. 创建列表

1.1 第一种

1.2 第二种

二. 查询列表

2.1 获取列表元素索引

2.2 获取列表单个元素

2.3 获取列表多个元素

2.3 判断元素是否存在于列表

三. 列表添加操作

四. 列表删除操作

五. 修改列表元素

六. 列表排序操作


一. 创建列表

列表(list)作为Python中基本的数据结构,是存储数据的容器,相当于其它语言中所说的数组。

模拟出的结构如下:

 

创建列表有两种方式:

1.1 第一种

使用“[ ]”进行创建,内部元素可以是任意数据类型:

list1=["Hello","world",True,0.01,12]

1.2 第二种

使用Python中内置函数list()

list2=list(["Hello","world",True,0.01,12])

列表的特点总结: 

  1. 列表元素是按照有序顺序进行排序的
  2. 每个索引对应一个数据
  3. 列表数据可以重复存储
  4. 内部元素可以是任意数据类型
  5. 根据内部元素多少动态分配内存空间

二. 查询列表

2.1 获取列表元素索引

使用index()函数获取元素索引,若列表中有重复元素,只获取第一个位置的索引,元素不存在会抛出错误。

# author: 爪哇斗罗(javaDouLuo)
# date: 2022/7/9 23:29

list1 = ["Hello","Hello",True,0.01,12]
# 索引为 0
print(list1.index("Hello"))
# 索引为 4
print(list1.index(12))
# 索引不存在 ValueError: 100 is not in list
print(list1.index(100))

给index()函数设置参数,可以在指定的范围内查找元素的索引位置

list1 = ["Hello", "Hello", True, 0.01, 12]
# 从索引1开始到索引4结束,不包括索引4,查找元素True的索引为2
print(list1.index(True, 1, 4))

2.2 获取列表单个元素

对于一个列表,索引从前往后下标是从0~N-1,从后往前是-N~-1,N表示元素个数。

# author: 爪哇斗罗(javaDouLuo)
# date: 2022/7/9 23:29

list1 = ["Hello", "Hello", True, 0.01, 12]

# 获取索引为2的元素 True
print(list1[2])
# 获取索引为-1的元素 12
print(list1[-1])
# IndexError: list index out of range
print(list1[5])

2.3 获取列表多个元素

使用索引只能获取一个元素,想要获取列表中多个元素使用切片。

公式:列表名[start : stop :step],意思是从哪里开始到哪里结束,可以定义步长(默认步长为1,step不能为0)。

对于切片的结果就是对原列表的拷贝生成一个新的列表对象。切片的用法如下:

# author: 爪哇斗罗(javaDouLuo)
# date: 2022/7/10 17:11

list1 = ["Hello", "Hello", True, 0.01, 12, 32, 34]

# 取索引1~6,默认步长为1:['Hello', True, 0.01, 12, 32]
print(list1[1:6:])
# 取索引1~6,['Hello', True, 0.01, 12, 32]
print(list1[1:6:1])
# 取索引1~6,步长为2:['Hello', 0.01, 32]
print(list1[1:6:2])
# start不写,默认从0开始:['Hello', True, 12]
print(list1[:6:2])
# ['Hello', True, 12]
print(list1[0:6:2])
# stop不写,
print(list1[0::2])
# step为负数 -1 [34, 32, 12, 0.01, True, 'Hello', 'Hello']
print(list1[::-1])
# [34, 12, True, 'Hello']
print(list1[::-2])
# [32, 12, 0.01, True, 'Hello', 'Hello']
print(list1[5::-1])
# [32, 12, 0.01, True]
print(list1[5:1:-1])

注意,若step为负数则是从后往前开始截取切片。

2.3 判断元素是否存在于列表

使用in或者not in,输出的是布尔类型的值。 

# author: 爪哇斗罗(javaDouLuo)
# date: 2022/7/10 17:11

list1 = ["Hello", "Hello", True, 0.01, 12, 32, 34]


# True
print("Hello" in list1)
# False
print("Hello" not in list1)
# False
print(True not in list1)
# True
print(12 in list1)

遍历列表元素:

# author: 爪哇斗罗(javaDouLuo)
# date: 2022/7/10 17:11

list1 = ["Hello", "Hello", True, 0.01, 12, 32, 34]

for i in list1:
    print(i)

三. 列表添加操作

# author: 爪哇斗罗(javaDouLuo)
# date: 2022/7/10 20:19

list1=[10,20,30,40,50,60]
# 在列表末尾添加一个元素
list1.append(34)
# [10, 20, 30, 40, 50, 60, 34]
print(list1)
# 在列表末尾添加多个元素
list1.extend([21,12,34])
# [10, 20, 30, 40, 50, 60, 34, 21, 12, 34]
print(list1)
# 在列表任意位置添加一个元素
list1.insert(0,1)
# [1, 10, 20, 30, 40, 50, 60, 34, 21, 12, 34]
print(list1)
# 在列表任意位置添加多个元素,会删除切片的元素,然后添加新元素
list2=["hello",3,40]
list1[5:8:]=list2
# [1, 10, 20, 30, 40, 'hello', 3, 40, 21, 12, 34]
print(list1)

四. 列表删除操作

# author: 爪哇斗罗(javaDouLuo)
# date: 2022/7/10 22:00

list1 = [10, 20, 30, 40, 50, 60, 70]
list1.remove(20)
# [10, 30, 40, 50, 60, 70]
print(list1)
# 删除索引为1的元素,不指定删除最后一个元素
list1.pop(1)
# [10, 40, 50, 60, 70]
print(list1)
# 切片删除
list1[1:3] = []
# [10, 60, 70]
print(list1)

五. 修改列表元素

为指定的索引修改元素值,也可以使用切片的方式修改。

# author: 爪哇斗罗(javaDouLuo)
# date: 2022/7/10 22:00

list1 = [10, 20, 30, 40, 50, 60, 70]
list1[3]="Hello"
# [10, 20, 30, 'Hello', 50, 60, 70]
print(list1)
# 切片方式
list1[3:6]=[1,1,1,1]
# [10, 20, 30, 1, 1, 1, 1, 70]
print(list1)

六. 列表排序操作

有常见的两种方式可以对列表中的元素进行排序,使用sort(),或者sorted()的方式进行排序。

两者区别就是前者排序后不会生成新的列表对象,而后者会生成一个新的列表对象。

# author: 爪哇斗罗(javaDouLuo)
# date: 2022/7/10 20:19

list1 = [10, 30, 20, 40, 80, 60]
# 原来list1: 1738929360704
print("原来list1:", id(list1))
# [10, 20, 30, 40, 60, 80] 默认升序
list1.sort()
print(list1)
# 后来list1: 1738929360704
print("后来list1:", id(list1))
# 指定reverse=True为降序
list1.sort(reverse=True)
# [80, 60, 40, 30, 20, 10]
print(list1)
###################################
list2 = [10, 30, 67, 100, 80, 32]
# 原来list2:  2357934175872
print("原来list2: ", id(list2))
list2 = sorted(list2)
# # [10, 30, 32, 67, 80, 100]
print(list2)
# 后来list2:  2357931224384
print("后来list2: ", id(list2))
# 降序
list2 = sorted(list2, reverse=True)
# [100, 80, 67, 32, 30, 10]
print(list2)

此外,还可以使用循环生成列表,称为列表生成式。主要结构:

[ i*i for i in range(a,b) ]

通过一个for循环生成列表,i*i指的是计算公式。

代码操作:

# author: 爪哇斗罗(javaDouLuo)
# date: 2022/7/10 20:19

# 生成1-9的列表式子,并通过i+i计算
list1 = [i + i for i in range(1, 10)]
# [2, 4, 6, 8, 10, 12, 14, 16, 18]
print(list1)

以上就是对于Python列表的简单操作。 

物联沃分享整理
物联沃-IOTWORD物联网 » Python基础:对Python列表(list)的详细用法

发表评论