python高级数据结构

列表

实质是加强版的数组,也是一个有序的集合,里面的数据可以是任何类型。

定义列表

1
2
a=[]
a=list()

访问

1
2
3
4
5
a[1]
a[2]
//支持负索引
a[-1]就是列表的最后一个元素
a[-2]就是列表倒数第二个元素

切片

拼接

重复

in

迭代

列表函数

列表使用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
arr=[1,2,3,4]
#像末尾添加元素
arr.append(6)
print(arr)
#像指定位置插入元素
arr.insert(2,10)
print(arr)
#批量在插入元素
arr.extend([25,26])
print(arr)
#删除从左到右匹配的第一个匹配项
arr.remove(6) #如果没有找到返回None
print(arr)
#根据索引移除列表的某一个元素,不加参数默认移除最后一个
arr.pop(3)
print(arr)
#查找指定元素的索引并返回
print(arr.index(2))
#返回某个元素在列表中出现的次数
print(arr.count(10))
#反向列表的元素
arr.reverse()
print(arr)
#排序
arr.sort()
arr.sort(reverse=True)
#清楚列表所有元素
arr.clear()
print(arr)

元组

定义

1
type(a)

其他操作和列表一样

字典

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#不支持索引访问,有key-value组成
#创建
vis={}
#冒号左边为键,右边为值。
vis={"a":1,"b":2}
#访问
print(len(vis))
print(vis["a"])
vis["a"]=3
print(vis["a"])
#遍历
for i in vis:
print(i)
for i in vis:
print(vis[i])
for i in vis.keys():
print(i)
for i in vis.values():
print(i)
#删除所有元素
vis.clear()
print(vis)
vis={"a":1,"b":2}
#返回浅拷贝
print(vis.copy())
#返回所有键
print(vis.keys())
#返回所有值
print(vis.values())
#以列表返回可遍历的(键,值)元组数组
print(vis.items())
for i in vis.items():
print(i)
#修改字典元素
vis["b"]=3
vis["c"]=2
vis.update({"d":4})
print(vis)
#删除字典元素
vis.pop("a")
del vis["b"]
print(vis)
#返回指定键的值
print(vis.get("a"))#键不存在时,返回None
#创建一个新字典,以一个序列的值作为键,另一个值作为值得初始值
a=[1,2,3]
vis1=dict.fromkeys(a,3)
print(vis1)

字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#字符串是一个有序的集合
#可以使用索引访问
#字符串的元素不可修改
str="诸葛大力"
print(str[0])
print(str+str)
print(str*2)
#输出格式
print("a:%s"%str)
#函数
print(len(str))
print(min(str))
print(max(str))
#返回在str出现的次数
print(str.count("大"))
#返回在str的索引
print(str.index("大"))
print(str.find("大")) #不存在返回-1
#替换
print("abc".replace("a","c"))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#去除字符串两端的空格、转义字符或指定的字符
print(" abscd\n".strip())
print("abscde".strip("a"))
#删除左边的
print("aabaa".lstrip("a"))
#删除右边的
print("aabaa".rstrip("a"))
#检测是否以某个字符开头
print("asjcas".startswith("as"))
print("asjcas".startswith("jc",2,-2))
#检测是否以某个字符结尾
print("asjcas".endswith("as"))
#用指定的字符去切割总字符串
s="abcdfasds"
print(s.split("s"))
#用字符串s去连接序列的各个元素
print("".join(["a","b","c"]))
print("#".join(["a","b","c"]))
#将字符串左对齐,多出来的位置用字符填充
print("abc".ljust(10))
print("abc".ljust(10,"0"))
#将字符串右对齐,多出来的位置用字符填充
print("abc".rjust(10))
print("abc".rjust(10,"0"))
#居中对齐
print("abc".center(10))
#将字符串中的tabs键转换为指定大小的空格
print("ab\tc".expandtabs(10))
#英文字母大小写转换
s="aBCHcs"
print(s.lower())
print(s.upper())
print(s.swapcase())#大写换小写,小写换大写
print(s.capitalize())#首字母大写,其余全小写
s="abc def"
print(s.title())#所有单词所有首字母大写
#字符映射转换表
a="abc"
b="123"
delet="h"
x="".maketrans(a,b,delet) #把字符串a和b对应,把delet出现的删掉
temp="ahcdb".translate(x)
print(temp)
#检测是否全为字母
print("abc".isalpha())
print("a1v".isalpha())
#检测是否全为数字
print("abc".isdigit())
print("123".isdigit())
#检测是否出现了除字母数字以外的字符
print("abc".isalnum())
print("123".isalnum())
print("a2n".isalnum())
print("*nsa".isalnum())
#判断是否全为大写
print("ACN".isupper())
#是否全为小写
print("abc".islower())
#是否是首字母大写
print("Abc".istitle())
#是否全是空白字符
print(" ".isspace())
#是否是标识符
print("_sdaw".isidentifier())
#是否全有数字组成
print("12346五十".isnumeric())

输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
abscd
bscde
baa
aab
True
True
True
['abcdfa', 'd', '']
abc
a#b#c
abc
abc0000000
abc
0000000abc
abc
ab c
abchcs
ABCHCS
AbchCS
Abchcs
Abc Def
13d2
True
False
False
True
True
True
True
False
True
True
True
True
True
True

列表生成式

1
2
3
4
5
6
7
8
9
10
11
12
#创建list的生成式
#生成1-10的平方
arr=[]
for i in range(1,11):
arr.append(i*i)
print(arr)

brr=[i*i for i in range(1,11)]
print(brr)
#乘法口诀
crr=[str(i)+"*"+str(j)+"="+str(i*j) for i in range(1,10) for j in range(1,i+1)]
print(crr)

set

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#它是无序的集合
#集合中的元素不允许出现重复
#集合中的元素必须是不可变数据类型
#集合用{}或者用set()
a=set()
a={1,2,3,4}
print(a)
a={1,2,1,1}
print(a)
#去重
arr=[1,2,1,1]
arr=set(arr)
print(arr)
print(1 in a)
#不支持乘法运算,支持迭代
#添加
a.add(3)
for i in a:
print(i)
#删除
a.remove(1)
print(a)
#支持交集并集补集
print(a&arr)
print(a|arr)
print(a-arr)

输出

1
2
3
4
5
6
7
8
9
10
11
{1, 2, 3, 4}
{1, 2}
{1, 2}
True
1
2
3
{2, 3}
{2}
{1, 2, 3}
{3}