📝前言:
这篇文章主要讲解一下python中常见的数据容器之一——列表
本文主要讲解列表的创建以及我们常用的列表操作方法

🎬个人简介:努力学习ing
📋个人专栏:C语言入门基础以及python入门基础
🎀CSDN主页 愚润求学
🌄每日鸡汤:且视他人之疑目如盏盏鬼火,大胆去走你的夜路


一,什么是列表

首先,列表是什么?
在Python中,列表(List)是一种有序、可变的集合数据类型,可以存储任意类型的元素,包括数字、字符串、布尔值、甚至其他列表。列表允许重复的元素,也可以包含混合类型的元素。

从上面我们可以提取出列表的以下几个特点:
1,可以容纳多个数据(上限为2**63-1、9223372036854775807个)
2,可以容纳不同类型的数据(混装)
3,数据是有序存储的(有下标序号)
4,允许重复数据存在
5,可以修改(增加或者删除元素)

二,列表的创建

列表的创建是通过方括号 [] 以及逗号分隔符,来实现的。例如:

my_list = [1, 2, 3, "apple", True] # 这里创建了一个存放着不同数据类型的列表

三,列表的下标索引访问

如果对下标索引不太了解的朋友可以先看这篇文章C语言——数组,里面有对下标索引的详细介绍。

1,访问普通的列表

在python中,元素的下标:从前向后,是从0开始,但是也可以反向索引:从后向前,是从-1开始
以下是一个使用列表下标索引的简单示例:

# 创建一个列表
my_list = [1, 2, 3, 4, 5]

# 使用下标索引来获取列表中的元素
first_element = my_list[0]  # 结果是1
second_element = my_list[1]  # 结果是2

在这个例子中,我们首先创建了一个包含5个整数的列表 my_list
然后,我们使用下标索引 [0][1] 来获取列表中的第一个和第三个元素,并将它们分别赋值给变量 first_elementsecond_element

(注意:超出列表范围的索引会引发错误)

2,访问嵌套的列表

例如:

# 定义一个嵌套的列表
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# 访问嵌套列表中的元素
first_element = nested_list[0][0]  # 第一个列表中的第一个元素
second_element = nested_list[1][2]  # 第二个列表中的第三个元素
third_list = nested_list[2]  # 第三个列表

print(first_element, second_element, third_list)

输出结果:
在这里插入图片描述
[0][0]:先找外层列表的第一个元素——列表,再找内层第一个列表的第一个元素
[1][2]:先找外层列表的第二个元素——列表,再找内层第二个列表的第三个元素
[3]:外层列表的第三个元素——列表

四,列表的常见操作方法

1,查找元素(index)

index()方法:用于从列表中查找指定元素的索引,但是如果列表不包含此元素,则会引发 ValueError
语法:

list.index(value, [start, [stop]]) # []代表可选

value:要从列表中查找的元素。
start:开始查找的位置。默认值为0。
stop:停止查找的位置。默认值为列表的长度。
返回值:返回指定元素在列表中的索引。

示例:

my_list = [1, 2, 3, 4, 5]

# 查找元素3的索引
index = my_list.index(3)
print(index)  # 输出 2

(注意:如果列表中有多个相同的指定元素,index() 方法仅返回第一个出现该元素的索引。)

2,增加元素

(1)在列表末尾追加(append)

append()方法:将一个值添加到列表的末尾,并返回修改后的列表。
(注意:append()方法是直接修改原始列表,而不是创建一个新列表。)
语法:

list.append(element)

list 是一个列表对象。
element 是要添加到列表末尾的元素。

示例一:

my_list = [1, 2, 3]
my_list.append(4)
print(my_list)  # 输出:[1, 2, 3, 4]

添加的元素还可以是一个列表
示例二:

my_list = [1, 2, 3]
sub_list = [4, 5]
my_list.append(sub_list)
print(my_list)  # 输出:[1, 2, 3, [4, 5]]

(2)在队尾追加多个元素(extend)

extend() 方法来扩展列表,即在列表的末尾添加其他列表或其他元素。
(注意:extend() 方法会直接修改原始列表,而不是创建一个新的列表。)
语法:

list.extend(iterable)

iterable:要添加到列表末尾的元素序列。(不可是字符串或者字典)

示例:

# 创建一个列表
lst = [1, 2, 3]

# 使用 extend() 方法扩展列表
lst.extend([4, 5, 6])  # 将另一个列表扩展到原始列表的末尾
print(lst)  # 输出:[1, 2, 3, 4, 5, 6]

# 尝试扩展一个字符串,会引发 TypeError
try:
    lst.extend("Hello")
except TypeError as e:
    print(f"Error: {e}")

(3)在指定位置插入元素(insert)

insert() 方法来插入一个元素到指定的位置。
(注意:insert() 方法会直接修改原始列表,而不是创建一个新的列表。)
语法

list.insert(index, element)

index:指定插入的位置。(下标)
element:要插入的元素。

示例:

# 创建一个列表
lst = [1, 2, 3, 4]

# 使用 insert() 方法插入元素
lst.insert(1, 1.5)  # 在索引 1 处插入 1.5
print(lst)  # 输出:[1, 1.5, 2, 3, 4]

3,删除元素

(1)直接删除(del)

del 语句用于从列表中删除指定下标的元素,不会返回被删除的元素。
直接修改原始列表
语法:

del list[下标]

示例:

lst = [1, 2, 3, 4, 5]
del lst[1]  # 删除索引为1的元素,即2
print(lst)  # 输出:[1, 3, 4, 5]

(2)删除并返回(pop)

pop() 方法用于从列表中删除指定下标的元素,会返回被删除的元素。
直接修改原始列表
语法:

list.pop(下标)

示例:

lst = [1, 2, 3, 4, 5]
removed_element = lst.pop(1)  # 删除索引为1的元素,并返回该元素
print(lst)  # 输出:[1, 3, 4, 5]
print(removed_element)  # 输出:2

(3)删除对应内容(remove)

remove() 方法用于删除某元素在列表中的第一个匹配项,如果元素不在列表中,这个方法不会引发错误。
直接修改原始列表
语法:

list.remove(元素)

示例:

numbers = [1, 2, 3, 4, 5, 3]
numbers.remove(3)
print(numbers)  # 输出 [1, 2, 4, 5, 3]

(4)清空列表(clear)

clear() 方法用于清空列表中的所有元素。
语法:

list.clear()

示例:

numbers = [1, 2, 3, 4, 5]
numbers.clear()
print(numbers)  # 输出 []

4,统计某元素出现的次数(count)

count()统计某元素出现的数量
语法:

list.count(元素)

示例:

fruits = ["apple", "banana", "cherry", "apple"]
count = fruits.count("apple")
print(count)  # 输出 2

5, 统计列表全部元素的个数(len)

len()用于统计列表中全部元素的个数
语法:

len(列表)

示例:

fruits = ["apple", "banana", "cherry"]
count = len(fruits)
print(count)  # 输出 3

6,反转列表(reverse)

reverse()可以用于反转列表
(注意:reverse()方法会直接修改原始列表,而不是创建一个新的反转对象。)
基本语法:

列表.reverse()

示例:

# 反转列表
lst = [1, 2, 3, 4, 5]
lst.reverse()
print(lst)  # 输出: [5, 4, 3, 2, 1]

7,方法总结

因为列表是可以修改的序列,所以有关列表的大多数操作都是直接在原始列表上进行的,不会返回新的列表

下面对方法做个梳理,方便大家随时查阅功能:
在这里插入图片描述

五,推导式

列表推导式(List Comprehension)是 Python 中的一个强大工具,它允许你从一个现有的列表中创建一个新的列表,同时可以执行一些操作。使用列表推导式,你可以有效地创建新的列表,其语法结构为:

new_list = [expression for item in iterable if condition]

expression:对于列表中的每个元素,需要计算的表达式。
item:当前迭代的元素。
iterable:可以迭代的对象,如列表、元组或集合。
condition:可选条件,用于过滤迭代中的元素。

让我们通过几个简单的例子来理解列表推导式:

假如我们有一个列表,表示学生不同的成绩:

scores = [85, 90, 78, 92, 88, 76, 95, 89]

现在我们需要给每个学生的成绩都减去10分,得到一个新的成绩列表:

new_scores = [score - 10 for score in scores]
print(new_scores) # 输出:[75, 80, 68, 82, 78, 66, 85, 79]

我们又要选出新成绩中,成绩大于80分的优秀成绩:

outstanding_scores = [s for s in new_scores if s > 80]
print(outstanding_scores)  # 输出:[82, 85]

注意:
字典的列表推导式:
假如我想实现,把两个列表中的元素组合拼成一个字典:
但是下面这种是错误的

list = [0, 1, 2, 3, 4, 5]
dict2 = {k: v for k in range(6) for v in list}
print(dict2)  # 输出:{0: 5, 1: 5, 2: 5, 3: 5, 4: 5, 5: 5}

这是因为:
这种写法,相当于使用了两个嵌套的循环:
外层循环遍历 range(6),即0, 1, 2, 3, 4, 5
内层循环遍历 list 列表,即0, 1, 2, 3, 4, 5
每一次都是内层执行完以后,得到最后一个元素,然后赋值给了0-5这六个键

v = 0
for k in range(6):
    for v in list:
        v = v
    print(k,v)

正确写法:
使用zip先把两个列表合并成一个以元组为元素zip可迭代对象:

list = [0, 1, 2, 3, 4, 5]
dict2 = {k: v for (k, v) in zip(range(6),list)}
print(dict2)  # 输出:{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5}

🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐