Python数据容器——列表(list)

数据容器入门

Python中的数据容器:

一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素

每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。

数据容器根据特点的不同,如:是否支持重复元素,是否可以修改,是否有序,等

分为5类,分别是:

列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)

数据容器:

1、List(列表)入门

1、list(列表)就是C语言里的数组。

字面量:[元素1,元素2,元素3]

定义变量:变量名称 = [元素1,元素2,元素3]

定义空列表:

变量名称 = [] 或 变量名称 = list()

元素可以是不同类型。例如:

python 复制代码
list1 = ['Hello', 111, True]

2、列表可以嵌套:

python 复制代码
list2 = [['Hello', 111, True], ['world', 222, False]]

3、可以使用列表的下标索引从列表中取出元素

python 复制代码
list1 = ['Hello', 111, True]
print(list1[0]) # 输出Hello
print(List[-1]) # 反向索引,输出 True,从-1开始,依次递减  -1,-2......




list2 = [['Hello', 111, True], ['world', 222, False]]
print(list2[1])
print(list2[0][1])

"""
输出结果:
['world', 222, False]
111
"""

4、列表的常用方法(操作)

插入元素、删除元素、清空列表、修改元素、统计元素个数

等等功能,这些功能我们都称之为:列表的方法

在Python中,如果将函数定义为class(类)的成员,那么函数会称之为:方法

python 复制代码
class Student:

    def add(self,x,y):
        return x+y

方法和函数功能一样,有传入参数,有返回值,只是方法的使用格式不同,只有这一点不同:

函数的使用:num add(1,2)

方法的使用:student = Student()

num = student.add(1,2)

列表内部提供了很多方法:注意:方法后是小括号()

|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------|
| 方法 | 功能或注意点 |
| 查找: 列表名.index(元素) | 查找指定元素在列表的下标 如果找不到,报错ValueError |
| 修改:列表名[下标] = 值 | 是重新赋值,"列表名[下标] = 值"中的值会替换原来的值 |
| 插入: 列表名.insert(下标,元素) | 是在指定的地方插入指定的元素,"列表名.index(下标,元素)"就是在该下标下插入该元素。 需要注意的是: 1、这里是insert,不是index。 2、插入后,后面的元素会后移,而不是被替换掉。 3、是小括号,不是中括号。 |
| 追加: 单个元素: 列表名.append(元素) 列表名.extend(其他数据容器) | append()是将指定元素追加到列表的尾部。 extend()是将其他数据容器的内容取出,依次追加到列表尾部。 |
| 通过指定下标来删除: 1、del 列表名[下标] 2、列表名.pop(下标) 通过指定元素来删除: 列表名.remove(元素) | 通过指定元素来删除时,是删除某元素在列表中的第一个匹配项 |
| 清空列表: 列表名.clear() | 结果:[] |
| 统计某元素在列表内的数量: 列表名.count(元素) | 不可以查询到表中表的内容。 |
| 统计列表长度 len(列表名) | |

例如:

python 复制代码
# 查询方法
list1 = ["Hello", "World", "!"]
index = list1.index("Hello")
print(index)
# 输出结果:0 (这表明是正向的索引)

list2 = [["Hello", 111, True], ['world', 222, False]]
index = list2.index("Hello")
print(index)
# 输出:ValueError: 'Hello' is not in list
'''
要查找的元素 "Hello" 是一个字符串,
而列表中的元素是嵌套列表。
在这种情况下,需要使用循环来遍历列表
并检查子列表中的元素。
否则会报错。
修正后:↓
'''
for i in range(len(list2)):
    if "Hello" in list2[i]:
        index = i
        break
print(index)
# 输出结果:0
python 复制代码
# 修改元素值
list1 = ["Hello", "World", "!"]
list1[1] = "Python"  # 正向下标
list1[-1] = "~"   # 反向下标
print(list1)
# 输出结果:['Hello', 'Python', '~']
python 复制代码
# 插入元素值
list1 = ["Hello", "World", "!"]
list1.insert(1,"Python")
list1.insert(-1, "~")
print(list1)
# 输出结果:['Hello', 'Python', 'World', '~', '!']
python 复制代码
# 追加元素
list1 = ["Hello", "World", "!"]
list1.append("~")
print(list1)
# 输出结果:['Hello', 'World', '!', '~']

list2 = [1, 2, 3]
list2.append([4, 5, 6])
# list2.append(7, 8) #这个会报错,只能追加单个元素的方法
print(list2)
# 输出结果:[1, 2, 3, [4, 5, 6]]

list2.extend(list1)  # 追加其他数据容器
print(list2)
# 输出结果:[1, 2, 3, [4, 5, 6], 'Hello', 'World', '!', '~']
python 复制代码
# 通过指定下标来删除元素
list1 = ["Hello", "World", "!"]
list2 = [1, 2, 3]

del list1[0]
element = list2.pop(0)  # 用element来接受删点的元素

print(list1)  # 输出结果:['World', '!']
print(list2)  # 输出结果:[2, 3]
print(element)  # 输出结果:1

# 通过指定元素来删除
list3 = [1, 1, 2, 3]
list3.remove(1)
print(list3)  # 输出结果:[1, 2, 3]
python 复制代码
# 清空列表
list3 = [1, 1, 2, 3]
list3.clear()
print(list3)  # 输出结果:[]
python 复制代码
# 统计元素1的个数
list3 = [1, 1, 2, 3]
count = list3.count(1)
print(count)  # 输出结果:2
python 复制代码
# 统计列表长度
print(len(list3))  # 输出结果:4
python 复制代码
# 综合训练
list5 =[21, 25, 21, 23, 22, 20]

list5.append(31)  # 追加一个数字31到列表的尾部
list5.extend([29, 33, 30])  # 追加一个新列表[29,33,30]到列表的尾部
num1 = list5[0]  # 取出第一个元素(应是:21)
num2 = list5[-1]  # 取出最后一个元素(应是:30)
index = list5.index(31)  # 查找元素31所在的位置

print(f"追加一个数字31到列表的尾部后的list5是:{list5}")
print(f"追加一个新列表[29,33,30]到列表的尾部后list5是:{list5}")
print(f"取出的第一个元素是: {num1}")
print(f"取出最后一个元素是: {num2}")
print(f"元素31所在的位置是: {index}")

"""
输出结果:
追加一个数字31到列表的尾部后的list5是:[21, 25, 21, 23, 22, 20, 31, 29, 33, 30]
追加一个新列表[29,33,30]到列表的尾部后list5是:[21, 25, 21, 23, 22, 20, 31, 29, 33, 30]
取出的第一个元素是: 21
取出最后一个元素是: 30
元素31所在的位置是: 6
"""

2、1ist(列表)的遍历

列表的遍历有两种:使用while循环,遍历列表的元素和使用for循环,遍历列表的元素。

while循环:

index = 0

while index < len(列表名):

元素 = 列表名[index]

其他处理......

index += 1 #最关键的一步,千万别忘记。

除了while:循环外,Python中还有另外一种循环形式:for循环。
对比while,for循环更加适合对列表等数据容器进行遍历。

for 临时变量 in 数据容器:

对临时变量进行处理

for循环中,会把取出的变量赋值给临时变量

python 复制代码
# 通过while来完成列表的遍历
list3 = [1, 1, 2, 3]
print("列表的元素值是:", end=" ")

index = 0  # 从0下标开始遍历
while index < len(list3):
    element = list3[index]  # 取出index下标对应的元素
    print(element, end=" ")
    index += 1  # 千万别忘了这一点,循环的关键;python里不支持index++
#  输出结果:列表的元素值是: 1 1 2 3
print()

# 通过for来完成列表的遍历
for element in list3:
    print(f"列表的元素有:{element}")

list4 = [["Hello", 111, True], ['world', 222, False]]
"""
输出结果:
列表的元素有:1
列表的元素有:1
列表的元素有:2
列表的元素有:3
"""

两者之间比较:

while循环和for循环,都是循环语句,但细节不同:

·在循环控制上:

while循环可以自定循环条件,并自行控制

for循环不可以自定循环条件,只可以一个个从容器内取出数据

·在无限循环上:

while循环可以通过条件控制做到无限循环

for循环理论上不可以,因为被遍历的容器容量不是无限的

在使用场景上:

while循环适用于任何想要循环的场景

for循环适用于逾历数据容器的场景或简单的固定次数循环场景​​​​​​​

相关推荐
c4fx5 分钟前
Delphi5利用DLL实现窗体的重用
开发语言·delphi·dll
鸽芷咕28 分钟前
【Python报错已解决】ModuleNotFoundError: No module named ‘paddle‘
开发语言·python·机器学习·bug·paddle
Jhxbdks38 分钟前
C语言中的一些小知识(二)
c语言·开发语言·笔记
java66666888838 分钟前
如何在Java中实现高效的对象映射:Dozer与MapStruct的比较与优化
java·开发语言
Violet永存38 分钟前
源码分析:LinkedList
java·开发语言
子午39 分钟前
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
人工智能·python·cnn
代码雕刻家40 分钟前
数据结构-3.1.栈的基本概念
c语言·开发语言·数据结构
Fan_web42 分钟前
JavaScript高级——闭包应用-自定义js模块
开发语言·前端·javascript·css·html
梦想科研社1 小时前
【无人机设计与控制】四旋翼无人机俯仰姿态保持模糊PID控制(带说明报告)
开发语言·算法·数学建模·matlab·无人机
风等雨归期1 小时前
【python】【绘制小程序】动态爱心绘制
开发语言·python·小程序