有的时候,代码中需要表示的数据是非常多的,甚至也不知道要去保存多少个数据,这个时候,就需要用到列表
列表是一种让程序员在代码中批量表示/保存数据的方式
元组的设定和列表是非常相似的,只是列表中存放的元素是可以进行增加删除和修改的,而元组中的元素是在元组创建的时候就设定好的,不能进行修改调整
创建列表
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