列表,元组,字典

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

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

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

创建列表

复制代码
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

相关推荐
天呐草莓1 天前
企业微信自动打标签教程
大数据·python·微信·微信小程序·小程序·企业微信
黑蛋同志1 天前
使用 pyenv 在Ubuntu 20 上安装 Python 3.10
chrome·python·ubuntu
大数据追光猿1 天前
【Agent】高可用智能 Agent:记忆机制设计与性能优化实战
人工智能·python·langchain·大模型·agent
MyBFuture1 天前
C# 二进制数据读写与BufferStream实战
开发语言·c#·visual studio
川石课堂软件测试1 天前
软件测试的白盒测试(二)之单元测试环境
开发语言·数据库·redis·功能测试·缓存·单元测试·log4j
snow@li1 天前
前端:拖动悬浮小窗
开发语言·前端·javascript
温轻舟1 天前
圣诞节雪人动态效果 | HTML页面
开发语言·前端·javascript·html·css3·温轻舟·圣诞
加成BUFF1 天前
C++入门讲解6:数据的共享与保护核心机制解析与实践
开发语言·c++
言之。1 天前
Django流式响应
后端·python·django
qq_430855881 天前
线代第三章向量第一节:n维向量及其运算
python·决策树·机器学习