Python学习笔记

切片

产生列表的子集
字符串、列表、元组都支持切片操作
切片的语法:[起始 : 结束 :步长]
左闭右开 步长表示选取的间隔 默认是 1

1
2
3
4
5
6
7
字符串切片
name = "abcdefghijk"
print(name[4:6]) # 取下表4-6,也就是name[4],name[5]
print(name[2:]) # 结束缺省,表示取下标为2开始到最后的字符
print(name[:3]) # 开始缺省,表示取开始到下标为3之前的字符
print(name[1:-1]) # 负数索引返回离列表末尾相应距离的元素
print(name[::-1]) # 步长为负, 表示从后往前切片

1
2
3
4
列表切片
cars = ['Audi', 'BMW', 'BenZi', 'Toyota']
print(cars[::-1]) # 逆序输出列表,实际结构没有发生改变
print(cars[1:3]) # 产生列表的子集,切片始于'BMW',终于‘Benzi’

1
2
3
4
5
6
切片的应用
# 实现 [1,2,3,4....100]变成[[1,2,3],[4,5,6],...]
a = [x for x in range(1, 101)]
print(a)
b = [a[x:x+3] for x in range(0, len(a), 3)] # 产生列表的子集
print(b)

可变的类型 : 列表List 字典Dict 集合Set

列表List

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# 列表
nameList = ['zhangsan', 'lisi', 1234]
# 打印列表
print(nameList)
# 访问
print(nameList[0])
# for循环遍历
for name in nameList:
print(name)
# while循环遍历
i = 0
while i < len(nameList):
print(nameList[i])
i += 1

# 列表的相关操作
# 1. 添加元素
# append()
A = ['zhangsan', 'lisi', 1234]
temp = input("请输入学生姓名:")
A.append(temp)
print(A)

# extend()可以将另一个元素逐一追加到列表中,append是整体添加
a = [1, 2]
b = [3, 4]
a.append(b)
print(a)
a.extend(b)
print(a)

# insert() 在指定位置插入元素(位置,元素)
c = [0, 1, 2]
c.insert(1, '3')
print(c)

# 2.修改操作
A = ['xiaoming', 'xiaohong', 1234]
A[1] = '小红'
print(A)

# 3.查询
# in / not in / index / count
# in
nameList = ['xiaoming', 'xiaohong', 1234]
findName = input("请输入要查找的姓名")
if findName in nameList:
print("你要找的人在列表中")
else:
print("没找到")

#index 返回第一次出现的序号
#count 返回出现的次数
a = ['a', 'b', 'c', 'a', 'b']
index = a.index('a')
print(index)
count = a.count('a')
print(count)

# 4.删除
nameList = ['xiaoming', 'xiaohong', 1234]
# del 根据下表删除
del nameList[2]
print(nameList)
# pop
print(nameList)
nameList.pop()
print(nameList)

# remove 根据元素的值进行删除
a = ['a', 'b', 'c', 'a', 'b']
print(a)
a.remove('a')
print(a)

# 排序
a = [1, 3, 4, 2]
b = [1, 3, 4, 2]
# sort()正序
a.sort()
#a.reverse(sort=True)
print(a)
# reverse() 逆序 也可以写作sort(reverse=True),反过来不可以
b.sort(reverse=True)
#b.reverse()
print(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
# 一个学校,有三个办公室,8位老师等待分配工位,完成随机分配

# 定义一个列表

import string
import random
# 定义一个列表来保存3个办公室
offices = [[], [], []]
# 定义一个列表来保存8个教师姓名
names = []
for i in range(8):
names.append(string.ascii_uppercase[i])
for name in names:
index = random.randint(0, 2)
offices[index].append(name)
# print(offices)

# 遍历展示
i = 1
for tempNames in offices:
print("办公室%d的人数为 %d : " % (i, len(tempNames)), end='')
i += 1
for name in tempNames:
print("%s" % name, end=' ')
print()
print('-'*30)

字典Dict

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
# 字典 {key1: value1, key2: value2}
info = {'name': '马云', id: 100, 'sex': 'm', 'address': '杭州'}

# 根据键 进行访问
# key: value
print(info[id])
# 访问不存在的键会报错
#print(info['age']) #keyError: 'age‘
# 面向对象的访问, 若不存在,返回默认值
age = info.get('age', 18)
print(age)
print(type(age))

# 常见操作
# 1. 查看
info = {'name': '西卡', 'age': 26}
print(info['age'])
# 修改
age = input("请输入年龄:")
info['age'] = age
print(info)
# 添加 键不存在,就会新增这个元素
add = input("请输入户籍所在地:")
info['address'] = add
print(info)

# 删除 del删除字典某个元素 clear()清空字典
# del info['address']
# print(info)
# info.clear()
# print(info)

# 字典方法
# len() 键值对个数 以列表方式储存
print(len(info))
# keys()返回所有键 values() 返回所有值 以列表方式储存
print(info.keys())
print(info.values())
# items 返回键值对列表 以列表方式储存
print(info.items())

# 字典的遍历
# key()
for key in info.keys():
print(key)

# value
for value in info.values():
print(value)

# 项 (元素)
for item in info.items():
print(item)

for key, value in info.items():
print(key, value)

# for 循环迭代
# chars = ['a', 'b', 'c', 'd']
# for i, chr in enumerate(chars):
# print(i, chr)

集合Set

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 集合
# 无序 元素唯一 一般用于元组或列表的元素去重
set1 = {1, 2, 3, 4}
# 添加元素 add()
set1.add(9)
print(set1)
# 修改元素 update()
set1.update('abcd')
print(set1)
# 删除元素 remove()不存在会报错
set1.remove(1)
print(set1)
# pop 随机删除集合中某个元素
set1.pop()
print(set1)
# discard 丢弃,放弃,不会报错
set1.discard(123)
print(set1)

不可变的类型 :数字Num 字符串Str 元组Tuple

数字Num

Python Number 数据类型用于存储数值。
数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间。

字符串Str

Python不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
Python访问子字符串,可以使用方括号来截取字符串

1
2
3
4
str = 'today is Sunday'
print(str[4])
print(len(str))
print(type(str))

元组Tuple

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 元组 tuple
# python 中的元组和列表类似,元组的元素是无法进行修改的
# 元组() 列表[]
# return a, b, c
aTuple = ('et', 77 , 3.14)
print(aTuple)
print(type(aTuple))
# 元组中只有一个元素,需要逗号结尾,否则会引起歧异
bTuple = (12,)
print(type(bTuple))
# 访问元组
print(aTuple[1])
# 修改元组 不支持修改
# aTuple[0] = 123
# count index
a = ('a', 'b', 'c', 'd')
print(a.index('a', 0, 3))
print(a.count('b'))
Knowledge is priceless, thanks for your support !