列表是一种批量保存数据的方式,列表使用[]
表示
a = []
print(type(a))
b = list()
print(type(b))
a = [1, 2, 3]
b = [1, 'hello', True, 3.14, [1, 2, 3]]
b = [1, 'hello', True, 3.14, [1, 2, 3]]
print(b)
[]
a = [1, 2, 3]
print(a[1])
注意:下标是从0开始的,也就是0对应第一个元素,1对应第二个元素
a = [1, 2, 3]
print(a[10])
len
函数获取列表元素的个数a = [1, 2, 3, 4]
print(len(a))
a = [1, 2, 3, 4]
# 倒数第一个元素是4
print(a[-1])
通过下标的方式可以修改值
a = [1, 2, 3, 4]
# 将倒数第一个元素修改为5
a[-1] = 5
print(a)
append
方法进行尾插a = [1, 2, 3, 4, 5]
a.append(6)
a.append(7)
print(a)
b = list()
b.append(1)
b.append(2)
print(b)
insert
方法向任意位置插入,这里的位置也是下标a = [1, 2, 3]
# 向下标1插入hello,列表变为1,hello,2,3
a.insert(1, 'hello')
print(a)
in
来判断元素是否在列表中a = [1, 2, 'hello']
print(1 in a)
print(3 in a)
print('hello' in a)
print('world' in a)
index
函数,查找元素在列表中的下标,如果元素不存在,则会抛异常a = [1, 2, 'hello']
print(a.index('hello'))
print(a.index(2))
a = [1, 2, 'hello']
print(a.index(3))
pop
函数可以进行尾删a = [1, 2, 'hello']
a.pop()
print(a)
a.pop()
print(a)
a = [1, 2, 3, 'hello']
a.pop(3)
print(a)
remove
函数,按照值删除
a = [1, 2, 3, 'hello']
a.remove(3)
a.remove('hello')
print(a)
+
可以拼接两个列表,使用+拼接,返回的是一个新列表,即原列表不受影响a = [1, 2, 3]
b = [4, 5, 6]
print(a + b)
extend
方法把一个列表拼接到另一个列表后面,此时会改变拼接的列表a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)
print(a)
print(b)
说明:将b列表拼接在a列表后面,即a列表发生变化,b列表不变
遍历列表就是从头往后依次获取列表中的每一个元素
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for e in a:
print(e)
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(0,len(a)):
print(a[i])
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
i = 0
while i < len(a):
print(a[i])
i += 1
通过下标是一次只能取出一个元素,而通过切片操作一次可取出一组连续的元素
[:]
进行切片操作a = [1, 2, 3, 4, 5]
print(a[1:3])
说明:[1:3]表示由下标组成为[1,3)区间的下标集合,包含的下标有1,2,不包含3
切片操作也可以省略前后边界
a = [1, 2, 3, 4, 5]
print(a[1:])
a = [1, 2, 3, 4, 5]
# 从头开始直到倒数第一个(不包含倒数第一个)
print(a[:-1])
a = [1, 2, 3, 4, 5]
print(a[:])
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 从下标1开始直到8(不包含8),每隔两个长度打印
print(a[1:8:2])
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 此时下标范围为[8,1)(从后往前)
print(a[8:1:-2])
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a[8:100])
元组和列表相似,只是列表中的元素可以被修改,而元组中的元素不可修改,也就是元组一旦确定,就只能进行读操作,不可以进行修改操作,元组使用
()
表示
# 创建两个空元组
a = ()
b = tuple()
在创建元组时进行初始化
a = (1, 2, 'hello', 3.14, True)
元组与列表类似,只是元组一旦定义则不能修改其中的元素
对于读之类的操作,和上述列表操作类似,此处不过多介绍,具体操作参照上述列表操作
def method():
return 10, 20
ret = method()
print(type(ret))
有了列表,为什么还需要元组?
字典是一个存储键值对
key: value
的结构,字典用{}
表示
键值对:键:值
,多个键值对用,
分割
# 创建两个空字典
a = {}
b = dict()
可以在创建的时候指定初始值,也可以使用print打印字典
a = {
'name': '张三',
'gender': 'm',
'age': 20
}
print(a)
使用[]
可以根据key来增加元素或者修改元素
a = {
'name': '张三',
'gender': 'm',
'age': 20
}
# class不存在,则为新增
a['class'] = 3
print(a)
a = {
'name': '张三',
'gender': 'm',
'age': 20
}
a['name'] = '李四'
print(a)
使用pop
方法根据key删除键值对
a = {
'name': '张三',
'gender': 'm',
'age': 20
}
a.pop('name')
print(a)
in
可以判断key是否在字典中存在a = {
'name': '张三',
'gender': 'm',
'age': 20
}
print('name' in a)
print('class' in a)
[]
使用key来获取value的值a = {
'name': '张三',
'gender': 'm',
'age': 20
}
print(a['name'])
print(a['age'])
a = {
'name': '张三',
'gender': 'm',
'age': 20
}
print(a['class'])
a = {
'name': '张三',
'gender': 'm',
'age': 20
}
for key in a:
print(key, a[key])
a = {
'name': '张三',
'gender': 'm',
'age': 20
}
print(a.keys())
说明:dict_keys是一个特殊的类型,专门用来表示字典所有的key
a = {
'name': '张三',
'gender': 'm',
'age': 20
}
print(a.values())
说明:dict_values和dict_keys类似,专门用来表示字典中所有的value
a = {
'name': '张三',
'gender': 'm',
'age': 20
}
print(a.items())
说明:dict_items和dict_keys类似,专门用来表示字典中所有的键值对
字典本质上是一个哈希表
,而哈希表的key值是要求是“可哈希的”
,也就是可以通过这个key计算出哈希值
print(hash(3))
print(hash('hello'))
print(hash(True))
print(hash((1, 2, 3)))
print(hash([1, 2, 3]))
print(hash({'name': 'zs', 'age': 10}))