一、前言
列表是一种数据项构成的有限序列,即按照一定的线性顺序,排列而成的数据项的集合,在这种数据结构上进行的基本操作包括对元素的的查找,插入,和删除(来自百度百科)。python列表有点像其他语言的数组,它是 Python 中最基本的数据结构之一,也是最常用的数据类型之一,本节一起来了解一下列表的相关知识。
二、列表的格式
python的列表使用一组中括号[]进行包裹,里边的元素使用","分隔,例如:
num_list= [1,2,3]
列表中的元素可以是不同类型的
demo_list = ["hello",1,"world"]
三、列表的创建
列表的创建我们在这里介绍4种方法:
1、直接创建
empty_list=[]
num_list = [1,2,3]
name_list = ["xiaoming","lihua"]
print(empty_list,num_list,name_list )
# 输出结果
[],[1,2,3],["xiaoming","lihua"]
2、使用list函数创建
(1)、参数为可迭代对象
可迭代对象:可以简单理解为支持遍历的对象
使用用 list([iterable])函数返回一个列表。
可选参数iterable是可迭代的对象,例如字符串,元组。list()函数将可迭代对象的元素重新返回为列表。
word="python"
example_set = ("hello","word")
word_list = list(word)
example_set_list = list(example_set)
print(word_list,example_set_list)
# 输出结果
['p', 'y', 't', 'h', 'o', 'n'] ['hello', 'word']
(2)、字典类型数据作为参数
将字典类型数据作为参数时,返回的列表元素是字典的键。
test_dict = {"name":"xiaoming","gender":"man"}
test_list = list(test_dict)
print(test_list)
# 输出结果
['name', 'gender']
(3)、range()函数作为参数
将range()函数作为参数,返回一个整数元素的列表。
test_list = list(range(2,8))
print(test_list)
# 输出结果
[2, 3, 4, 5, 6, 7]
3、使用列表推导式
test_list = [x for x in "python"]
print(test_list)
# 输出结果
['p', 'y', 't', 'h', 'o', 'n']
4、利用split分割字符串
word= "python is number one"
word_list = word.split(" ")
print(word_list)
# 输出结果
['python', 'is', 'number', 'one']
四、列表的相关操作
列表中存放的数据是可以进行修改的,比如"增"、“删”、“改”、“查”
1、添加元素("增"append, extend, insert)
(1)append
通过append可以向列表添加元素
list_A = ['apple','banana']
list_A.append("pear")
print(list_A)
# 输出结果
['apple', 'banana', 'pear']
(2)extend
通过extend可以将另一个集合中的元素逐一添加到列表中
a = [1, 2]
b = [3, 4]
a.append(b) # 使用append添加的情况
print(f"使用append添加:{a}")
a = [1, 2]
b = [3, 4]
a.extend(b) # 使用extend添加的情况
print(f"使用extend添加:{a}")
# 输出结果
使用append添加:[1, 2, [3, 4]]
使用extend添加:[1, 2, 3, 4]
在列表中插入另一个列表时,append会直接以列表的形式插入,extend则会将列表中的元素拆解逐一插入新列表
(3)insert
insert(index, object) 在指定位置index前插入元素object
a = [0, 1, 2]
a.insert(1, 3) # 在索引为1的位置插入3
print(a)
# 输出结果
[0, 3, 1, 2]
2、修改元素(“改”)
修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改
list_A = ['apple', 'banana', 'pear']
list_A[1] = 'peach' #修改banana为peach
print(list_A )
# 输出结果
['apple', 'peach', 'pear']
3、查找元素("查"in, not in, index, count)
所谓的查找,就是看看指定的元素是否存在
(1)in 和not in
in(存在),如果存在那么结果为true,否则为false
not in(不存在),如果不存在那么结果为true,否则false
fruits= ['apple', 'banana', 'pear']
find_name = "apple"
if find_name in fruits:
print(f'{find_name}在列表中')
else:
print(f'{find_name}不在列表中')
# 输出结果
apple在列表中
(2)index 和 count
index和count与字符串中的用法相同
index查找,如果不存在会抛出异常
count统计数量
a = ['a', 'b', 'c', 'a', 'b']
a.index('a', 1, 3) # 注意是左闭右开区间
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'a' is not in list
>>>a.index('a', 1, 4)
3
>>>a.count('b')
2
>>>a.count('d')
0
4、删除元素("删"del, pop, remove)
将某个元素从列表中删除
(1)del
根据下标进行删除
comic_name = ['千与千寻','幽灵公主','哈尔的移动城堡','龙猫','天空之城']
del comic_name [2]
print(comic_name)
# 输出结果
['千与千寻', '幽灵公主', '龙猫', '天空之城']
(2)pop
删除最后一个元素
comic_name = ['千与千寻','幽灵公主','哈尔的移动城堡','龙猫','天空之城']
comic_name.pop()
print(comic_name)
# 输出结果
['千与千寻', '幽灵公主', '哈尔的移动城堡', '龙猫']
(3)remove
根据元素的值进行删除
comic_name = ['千与千寻','幽灵公主','哈尔的移动城堡','龙猫','天空之城']
comic_name.remove('龙猫')
print(comic_name)
# 输出结果
['千与千寻', '幽灵公主', '哈尔的移动城堡', '天空之城']
5、排序(sort, reverse)
(1)sort
sort方法是将list按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。
new_list = [1, 4, 2, 3]
new_list.sort()
print(new_list)
# 输出结果
[1, 2, 3, 4]
(2)reverse
reverse方法是将列表进行逆序操作。
new_list = [1, 4, 2, 3]
new_list.reverse()
print(new_list)
# 输出结果
[3, 2, 4, 1]
[1, 4, 2, 3]
五、列表的嵌套
嵌套列表,就是列表中包含列表
students = [["李强","1班"],["张华","2班"],["王明","2班"],["张伟","3班"]]
for student in students:
name = student[0]
class_name= student[1]
print(f"学生的姓名是{name},班级是{class_name}")
# 输出结果
学生的姓名是李强,班级是1班
学生的姓名是张华,班级是2班
学生的姓名是王明,班级是2班
学生的姓名是张伟,班级是3班