文章目录
什么是列表?
列表就是用中括号[]
包裹起来的、有序的元素的集合,多个元素之间使用逗号,
进行分隔。
语法如下:
# 创建一个名为name_list的列表
# 列表中包含4个元素(或成员),分别为"张三", "李四", "王五", "赵六"
name_list = ["张三", "李四", "王五", "赵六"]
-
当列表中不包含任何元素时,就是空列表,例如:
empty_list = []
-
列表中的元素可以是任何类型,可以是数字、字符串、列表、元组等类型。例如:
example_list = [24, "字符串元素", ["字列表的字符串元素", 2]]
访问列表元素
-
列表中的每个元素都会被分配一个下标。
-
索引/下标:
- 从第一个元素开始,第一个元素的下标为0,第二个元素的下标为1,第三个元素的下标为2,以此类推,第N个元素的下标为N-1。
- 还可以从最后一个元素开始,最后一个元素的下标是-1,倒数第二个元素的下标是-2,以此类推,倒数第N个元素的下标为-N。
访问单个元素
通过列表名[下标]
的方式可以访问列表元素,例如:
names = ["张三", "李四", "王五", "赵六"]
print(names[0]) # 打印names列表第一个元素"张三"
print(names[-1]) # 打印names列表最后一个元素"赵六"
切片
- 通过
列表名[起始下标:截止下标+1]
的方式可以访问列表的一段元素,例如:
names = ["张三", "李四", "王五", "赵六"]
print(names[1:3]) # 打印names列表的中间两个元素"李四"、"王五"
注意:当通过name[1:3]
访问列表中一段元素时,下标3所对应的元素是不在访问范围内的,而下标1对应的元素在访问范围内。
- 切片还可以倒着切,例如:
names = ["张三", "李四", "王五", "赵六"]
print(names[-3:-1]) # 使用负数下标,打印names列表中中间两个元素
- 如果要从列表的第一个元素开始,那么可以使用
列表名[:截止下标+1]
的方式,也就是不指定起始下标,例如:
names = ["张三", "李四", "王五", "赵六", "钱七", "周八"]
print(names[:4]) # 输出列表的前4个元素
- 如果要切片至列表的最后一个元素,那么可以使用
列表名[起始下标:]
的方式,也就是不指定截止下标,例如:
names = ["张三", "李四", "王五", "赵六", "钱七", "周八"]
print(names[-4:]) # 输出列表的最后4个元素
- 如果既不指定起始下标,也不指定截止下标,即
列表名[:]
,那么就能获取整个列表,例如:
names = ["张三", "李四", "王五", "赵六", "钱七", "周八"]
print(names[:]) # 输出整个列表
- 切边还可以通过
列表名[起始下标:截止下标+1:步长]
跳着切,在不指定步长的情况下,步长的默认值为1。示例如下:
names = ["张三", "李四", "王五", "赵六", "钱七", "周八"]
print(names[::1]) # 以步长为1的方式对列表切片
print(names[::2]) # 以步长为2的方式对列表进行切片
print(names[::-1]) # 当把步长设置为-1时,可以实现列表的反转
增:向列表中增加元素
通过append()
追加
追加:把新元素添加到列表的末尾
names = ["张三", "李四", "王五", "赵六"]
names.append("郑七") # 把元素“郑七”添加到names列表的尾部
print(names)
通过insert()
插入
插入:把新元素插入到列表的指定位置
names = ["张三", "李四", "王五", "赵六"]
# 在元素“李四”的前面插入一个名字“郑七”,
# “李四”的下标是1,也就是新元素要插入的位置是1
names.insert(1, "郑七")
print(names)
通过extend()
合并
合并:将两个列表合并成一个列表
names_1 = ["James", "John", "Kobe"]
names_2 = ["张三", "李四", "王五", "赵六"]
names_1.extend(names_2) # 将列表names_2合并到names_1中
print(names_1)
删:从列表中删除元素
通过remove()
删除
names = ["张三", "李四", "王五", "赵六"]
# 将“李四”从列表中删除
names.remove("李四")
print(names)
注意:
-
remove()
会从列表的第一个元素开始查找要删除的元素,找到第一个匹配的元素后,就把它删除。remove()
只会删除它找到的第一个元素。 -
如果传递给
remove()
的元素在列表中不存在,那么Python会报错,例如:
通过del
删除
del
可以通过del 列表名[下标]
的形式删除指定位置的元素。
names = ["张三", "李四", "王五", "赵六"]
del names[1] # 删除列表中下标为1的元素,“李四”
print(names)
通过pop()
删除
pop()
可以删除一个元素,在不给它传入参数的情况下,默认删除列表的最后一个元素。- 还可以直接给
pop()
传入要删除的元素下标。 pop()
执行删除操作之后,会把删除的元素作为该操作的返回值,我们可以把这个元素存放在变量里。
names = ["张三", "李四", "王五", "赵六"]
# 从列表中删除最后一个元素,并把删除的元素保存在del_element变量中
del_element = names.pop()
print(del_element)
print(names)
# 删除列表中的下标为1的元素,并把删除的元素保存在del_element变量中
del_element = names.pop(1)
print(del_element)
print(names)
通过clear()
清空列表
如果想要删除列表中的所有元素,可以调用clear()
,例如:
names = ["张三", "李四", "王五", "赵六"]
names.clear() # 删除列表中的所有元素
print(names) # 输出names,发现列表确实变成空列表了
改:改变列表中某元素的值
想要修改列表元素的值,只需要通过下标找到对应元素,然后重新赋值即可。
names = ["张三", "李四", "王五", "赵六"]
names[1] = "郑七" # 把“李四”换成“郑七”
print(names)
查:查询列表中的元素
-
通过
in
或者not in
判断元素是否在列表中names = ["张三", "李四", "王五", "赵六"] "张三" in names # 如果元素在列表中,则返回True,否则,返回False "张三" not in names # 如果元素不在列表中,则返回True,否则,返回False
-
通过
index()
确定某个元素的下标names = ["张三", "李四", "王五", "赵六"] print(names.index("李四")) # 打印“李四”的下标
注意:
-
index()
从列表第一个元素开始查找,直接返回找到的第一个匹配的元素的下标。 -
如果要查询的元素不存在,则Python会报错,例如:
-
-
通过
count()
统计某个元素出现的次数names = ["张三", "李四", "王五", "赵六", "李四"] print(names.count("张三")) # “张三”在列表中出现的次数 print(names.count("李四")) # “李四”在列表中出现的次数
排序 & 反转
通过sort()
进行排序
如果列表中的元素都是数字,可以用sort()
进行排序,例如:
old_list = [5,3,6,7,100,0,80]
old_list.sort() # 对old_list进行排序
print(old_list)
sort()
是直接对old_list
进行改变,也就是说,old_list
会变成排序后的状态。
通过sorted()
进行排序
使用sorted()
也可以对里边进行排序,例如:
old_list = [5,3,6,7,100,0,80]
# 对old_list进行排序,将排序结果保存在new_list中
new_list = sorted(old_list)
print(old_list)
print(new_list)
使用sorted()
排序,old_list
并不会改变,sorted()
会将old_list
排序的结果作为该操作的返回值进行返回,我们需要按照需求将其保存在新的变量new_list
中。
注意:当列表中的元素不是数字时,也是可以使用sort()
或者sorted()
进行排序的,只不过排序规则并不是数值大小,而是和编码有关。
通过reverse()
进行列表反转
之前提到过,可以通过列表名[::-1]
的方式对列表进行反转,但是这种方式并不会对原列表进行改变,需要把反转的结果进行保存,例如:
test_list = [1,2,3,4,5,6,7,8,9,10]
# 对test_list进行反转,反转结果保存到new_list中
new_list = test_list[::-1]
print(test_list) # 原列表并不会发生改变
print(new_list) # 新列表中保存的是反转的结果
列表还支持reverse()
方法对列表进行反转,而且这种方法是直接对原列表进行修改,也就是说,原来的列表会直接变成反转后的状态:
test_list = [1,2,3,4,5,6,7,8,9,10]
test_list.reverse() # 对test_list进行反转
print(test_list)
嵌套列表
之前提到过,列表的元素还可以是列表,那么这种情况下,子列表中的元素怎么访问呢?
name_list = ["李磊", "韩梅梅", ["建国", "国强"]]
print(name_list[2]) # 通过列表名[下标]可以获取整个子列表
print(name_list[2][0]) # 获取子列表中第一个元素“建国”
print(name_list[2][1]) # 获取子列表中第二个元素“国强”
遍历列表
如果想要依次获取列表中的每个元素的值,可以使用下面两种方式:
name_list = ["李磊", "韩梅梅", "建国", "国强"]
for item in name_list:
print(item)
name_list = ["李磊", "韩梅梅", "建国", "国强"]
for i in range(len(name_list)):
print(name_list[i])