数据结构
# 数据结构
# 元组
# 注意事项
- 不可变
# 使用场景
- 交换变量
a, b = b,a
- 函数返回值
def a:
return (1,2)
- 元组赋值和输出
a = ('lv',26)
name, age = a
print('name:%s, age: %d'%(name, age))
print('name:%s, age: %d'%a)
# list
python 有元组的概念,但是经常用list 来模拟别的语言的数组实现
# 模拟数组
## 1维
a = [1,2,3]
## 1维 初始值 x, n 是个数
## a = [x ]* n
a = [-1] * 3 ## [-1, -1, -1]
## 2维 初始值 x, [m][n] , [4][3]
## [[-1, -1, -1], [-1, -1, -1], [-1, -1, -1], [-1, -1, -1]]
a = [[-1] * 3 for _ in range(4)]
二维数组使用列表生成式写法
# 初始化
numbers = [1, 2, 3]
## 空list
empty_list = []
empty_list_1 = list();
# append
添加元素
numbers = [1, 2, 3]
numbers.append(5) ## 1,2,3,5
# del
删除元素
## 删除最后一个数
del numbers[-1]
## 也可以使用切片
numbers[:-1]
# 取值
numbers[index]
numbers[-1]
# dict
字典, dict,dict全称dictionary, 键值对形式, 其他语言相当于 map, 常见用法是hashmap
# 创建
## 创建空 hashtable
a = dict()
b = {}
d = {1: 'a', 2: 'b', 3: 'c'}
# 插入
d[3] = 'd'
## {1: 'a', 2: 'b', 3: 'd'}
# 取值
## [] 获取key不存在,则直接报错, d[4]
## get 获取key不存在,则返回默认值
print(d[1])
print(d.get(1))
print(d.get(4))
通过索引d[1]
但是如果取不存在的键,就会直接报错 d[4]
通过 get
方法, 取不存在的不会报错 d.get(4)
# 判断是否存在
## key in d
3 in d ## True
4 in d ## False
# 遍历
for k, v in d.items():
print("%d:%s" % (k, v))
for k in d.keys():
print(k)
for k in d.values():
print(k)
d.items()
键值对
d.keys()
键
d.values()
值
# set
a = [1,2,2,3]
b = set(a) ## b = {1,2,3}
# 高级特性
# 切片&& Slice
## 切片,
## 浅拷贝
a = [1,2,3,4,5,6]
b = [1,2,3,4,5,6]
## 左闭右开
print(a[0:3]) ## output [1,2,3]
print(a[:3]) ## 等价于 a[0:3]
## 打印最后一个数
print(a[-1]) ## [6]
print(a[-2:]) ## [5,6]
print(a[-2:-1]) ## [5]
a[0:3]
等价于 a[:3]
第一个参数如果是0, 就可以省略不写,
切片支持正向,也支持反向, 最后一个数是 -1
a[-1]
就是最后一个数
a[-2:-1]
取得第二个数,左闭右开
a[-2:]
取最后两个数,-1 被省略
# 字符串的切片
s = '012345'
s[3:5]
s[3:]
# 注意事项
- 切片是浅拷贝
- 左闭右开
- 字符串也可以切片