列表,元组,字典

有的时候,代码中需要表示的数据是非常多的,甚至也不知道要去保存多少个数据,这个时候,就需要用到列表

列表是一种让程序员在代码中批量表示/保存数据的方式

元组的设定和列表是非常相似的,只是列表中存放的元素是可以进行增加删除和修改的,而元组中的元素是在元组创建的时候就设定好的,不能进行修改调整

创建列表

复制代码
alist = []

blist = list()

print(type(alist), type(blist))

如果需要放初始值,可以直接写在[]中, 列表中存放的元素是允许是不同类型的数据, 也是可以通过下标进行访问的

切片操作

通过下标操作是一次取出里面的第一个元素

通过切片,则是一次取出连续的元素,相当于得到一个子列表

复制代码
alist = [1,2,3,4,5,6]
print(alist[1:3])

切片操作中是可以省略前后边界的

复制代码
alist = [1, 2, 3, 4, 5]
print(alist[1:])
print(alist[:-1])
print(alist[:])

切片操作还可以指定步长,也就是每访问一个元素后,下标自增几步

复制代码
alist = [1, 2, 3, 4, 5]
print(alist[::1])
print(alist[0:4:2])

切片操作的步长还可以是负数,此时是从后往前的取元素,每取一个元素后下标自减几步

复制代码
alist = [1, 2, 3, 4, 5]
print(alist[::-1])
print(alist[::-2])

在Python中如果切片中的数字填写的越界的,是不会有负面效果的,只是会尽可能的把满足条件的元素切片

遍历列表中的元素

复制代码
alist = [1, 2, 3, 4, 5]
for i in alist:
    print(i)

for i in range(0, len(alist)):
    print(alist[i])

num = 0
while num < len(alist):
    print(alist[num])
    num += 1

新增元素

使用append方法向列表末尾中插入一个元素(尾差)

复制代码
alist = [1, 2, 3, 4, 5]
alist.append(6)
print(alist)

使用Insert方法,向任意位置插入一个元素

复制代码
alist = [1, 2, 3, 4, 5, 6]
alist.insert(1,'hello')
print(alist)

查找元素

使用的是 in 操作符,判定元素是否在列表中存在,返回的是布尔类型

复制代码
alist = [1, 2, 3, 4, 5, 6]
print(1 in alist)
print(2 in alist)
print(9 in alist)

使用index方法,查找元素在列表中下标,返回值是一个整数,如果元素不存在是会抛出异常的

复制代码
alist = [1, 2, 3, 4, 5, 6]
print(alist.index(3))
print(alist.index(199))

删除元素

使用 pop 的方法删除最末尾的元素

pop 也能根据下标来删除

复制代码
alist = [1, 2, 3, 4, 5, 6]
print(alist.pop())
print(alist.pop(2))

使用 remove 方法,按照值删除元素

复制代码
alist = [1, 2, 3, 4, 5, 6]
alist.remove(3)
print(alist)

连接列表

复制代码
alist = [1, 2, 3, 4, 5, 6]
blist = [8, 9, 10, 11, 12]
print(alist)
print(blist)
print(alist + blist)

使用 extend 方法,相当于把一个列表拼接到另一个列表的后面

a.extend(b),是把 b 中的内容拼接到 a 的末尾,但是是不会修改 b,但是会修改 a

复制代码
alist = [1, 2, 3, 4, 5, 6]
blist = [8, 9, 10, 11, 12]
alist.extend(blist)
print(alist)
print(blist)

元组和列表基本是差不多的

元组不能修改里面的元素,列表是可以修改里面的元素的

像,读操作,比如访问下标,切片,遍历,in,index,+等操作元组也是一样支持的,但是像写操作,比如修改元素,增加,删除,extend等,元组不能支持

字典

字典是什么?

字典是一种存储 键值对 的结构,底层的逻辑是哈希表

键值对就是把 键(key) 进行一个一个的一一对应 , 然后就可以根据键获取到相对应的值

创建字典

也可以在创建字典的时候就给改字典附上初始值

复制代码
student = {'name': 'Tom', 'age': 20, 'gender': 'Male'}
print(student)

查找key

使用 in 可以判断 key 是否在字典中存在,返回布尔值

复制代码
student = {
    "name": "Tom",
    "age": 22,
    "gender": "male"
}
print("name" in student)

使用[]通过类似于取下标的方式,获取到元素的值,只不过此处的"下标"是key

复制代码
student = {
    "name": "Tom",
    "age": 22,
    "gender": "male"
}
print("name" in student)
print(student["name"])

如果 key 不在字典中会抛出异常

新增或者是修改元素

使用[] 可以根据 key 来新增/修改 value

如果 key 不存在,对取下标操作赋值,即为新增加的键值对

复制代码
student = {
    "name": "Tom",
    "age": 22,
    "gender": "male"
}
student["grade"] = 95
print(student)

student = {
    "name": "Tom",
    "age": 22,
    "gender": "male"
}
student["id"] = 1
print(student)

删除元素

使用 pop 方法根据 key 删除对应的键值对

复制代码
student = {
    "name": "Tom",
    "age": 22,
    "gender": "male"
}
student.pop("gender")
print(student)

遍历字典中的元素

直接使用 for 循环能够获取到字典中的所有的key,进一步就可以取出所有的值

复制代码
student = {
    "name": "Tom",
    "age": 22,
    "gender": "male"
}

for key in student:
    print(key, student[key])

取出所有的key和value

使用keys方法可以获取到字典中的所有的 key

复制代码
student = {
    "name": "Tom",
    "age": 22,
    "gender": "male"
}

print(student.keys())

使用values方法也可以获取到字典中的所有value

复制代码
student = {
    "name": "Tom",
    "age": 22,
    "gender": "male"
}

print(student.values())

使用items方法可以获取到字典中的所用的键值对

复制代码
student = {
    "name": "Tom",
    "age": 22,
    "gender": "male"
}

print(student.items())

合法的key类型

不是所有的类型都是可以作为字典的key

字典本质上是一个 哈希表,哈希表的key要求是"可哈希的",也就是可以计算出一个哈希值

使用 hash 函数计算某个对象的哈希值

但凡能计算出哈希值的类型,都可以作为字典的key

相关推荐
小付爱coding1 小时前
Claude Code安装教程【windows版本】
java·git·python
**蓝桉**1 小时前
数组的执行原理,java程序的执行原理
java·开发语言
waeng_luo2 小时前
[鸿蒙2025领航者闯关] 表单验证与用户输入处理最佳实践
开发语言·前端·鸿蒙·鸿蒙2025领航者闯关·鸿蒙6实战·开发者年度总结
高频交易dragon2 小时前
5分钟和30分钟联立进行缠论信号分析
开发语言·python
ULTRA??2 小时前
C/C++函数指针
c语言·开发语言·c++
0思必得02 小时前
[Web自动化] 开发者工具应用(Application)面板
运维·前端·python·自动化·web自动化·开发者工具
还没想好取啥名2 小时前
C++11新特性(一)——自动类型推导
开发语言·c++·stl
我是华为OD~HR~栗栗呀2 小时前
华为OD-C面经-23届学院哦
java·c++·python·华为od·华为·面试
xiaozi41202 小时前
Ruey S. Tsay《时间序列分析》Python实现笔记:综合与应用
开发语言·笔记·python·机器学习