Python学习笔记
Chapter2 变量
2.1 title/upper/lower
title 首字母大写,非首字母小写
upper 全大写
lower 全小写
sNane = “alloSAD HERop”
print(sNane.title())
print(sNane.upper())
print(sNane.lower())
2.2 去除空格
rstrip 去除左边空格
lstrip 去除右边空格
strip 去除左右空格
sText = ” howd ihiu gi hboip! ”
print(“111″+sText.rstrip()+”111”)
print(“111″+sText.lstrip()+”111”)
print(“111″+sText.strip()+”111”)
Chapter3 语法初步
3.1 整除 //
整除符号 //,结果忽略小数部分
3.2 绝对值abs/ 四舍五入round/ 向上取整ceil/向下取整floor
abs 返回一个数的绝对值
round 返回一个数四舍五入后的值
ceil 向上取整
floor 向下取整
3.3 占位符 %s %d %.2f
%d 指一个整数
%.2f 指一个浮点数,保留两位小数
%s 字符串
%c 字符
sName = “Mary”
fPrice = 128.36
n = 5
sText = “%s has %d lambs, each lamb worth %.2f yuan. So, these lambs worth %.1f yuan. If in total.” % (sName,n,fPrice,fPrice*n)
print(sText)
#Mary has 5 lambs, each lamb worth 128.36 yuan. So, these lambs worth 641.8 yuan. If in total.
3.4 进制 转16进制hex / 转2进制bin
0x 16进制
0b 2进制
hex() 数字转换为16进制
bin() 数字转换为二进制
%x 以16进制输出
Chapter4 列表
4.1 append/insert/pop/del/remove
append(x) 在列表尾部添加元素x
insert(index,x) 在index位置添加元素x,其中index从0开始
pop() 从列表尾部删除元素,并且返回删除的值(若pop(index) 则删除对应位置的元素)
del list[index] 删除index位置的元素
remove(x) 移除第一个遇到的x元素
4.2 sort/sorted排序与倒序
sort 会改变列表元素的顺序
list.sort() 按递增(非递减)排序
list.sort(key=len) 使用len函数为每一个元素生成键值,按结果大小递增排序
list.sort(reverse=True) 按递减(非递增)排序
sorted(list) 不会改变列表元素的顺序 按递增(非递减)排序
list.reverse() 将列表元素顺序倒置
4.3 数值列表range(x)/range(x,y)/range(x,y,z)
range(x) 从0到x(不包含x)
range(x,y) 从x到y (包含x,不包含y)
range(x,y,z) 从x到y,步长为z (包含x,不包含y)
4.4 列表/矩阵快速生成
生成列表:
cubs = [x**3+100 for x in range(1,11)]
print(cubs)
#[101, 108, 127, 164, 225, 316, 443, 612, 829, 1100]
生成10行8列矩阵:
matrix = [[0]*8]*10
print(matrix)
#更复杂
matrix = [[r*c for c in range(8)] for r in range(10)]
print(matrix)
matrix = [x + y for x in “abs” for y in “0123”]
print(matrix)
#[‘a0’, ‘a1’, ‘a2’, ‘a3’, ‘b0’, ‘b1’, ‘b2’, ‘b3’, ‘s0’, ‘s1’, ‘s2’, ‘s3’]
4.5 列表拼接/乘*
list + list = list
list * n n为数字,列表将重复n次
string*n n为数字,字符串将重复n次
4.6 count()计数/clear()/extend()/index
list.count(x) 返回列表中x出现的次数
list.clear() 清空列表所有元素
list.index(x) 返回x的下标
4.6 列表复制
copy2 = list 将list地址传给copy2
copy2 = list.copy() 将list复制给copy2,传值而非传地址
id(list) 返回list的地址
4.7 (list/string)切片/切片用于复制,倒置/批量修改元素
list[x:y] 从下标x一直复制到y (包含x但不包含y)
list[x:] 从x一直复制到列表尾部(包含最后元素)
list[:y] 从第一个元素一直复制到y(不包含y)
list[x:y:z] 从下标x一直复制到y,步长为z (包含x但不包含y)
list2 = list[:] 将list复制给list2(传值而非传地址)
list2 = list[::-1] 将list的元素倒置,再复制给list2(传值而非传地址)
list[2:4] = 77,78 将2和3位置的元素修改为77、78
Chapter5 元组、集合
5.1 元组-只读的列表
元祖是只读列表。创建后只能读与操作,不能修改其元素与顺序。(可以切片/将不同元组连接)
patient = (1,2,3,4,5,6)
print(type(patient),patient)
print(patient[1:4])
print((1,2)+(3,4)+(5,))
print((1,2)*5)
”’
(1, 2, 3, 4, 5, 6)
(2, 3, 4)
(1, 2, 3, 4, 5)
(1, 2, 1, 2, 1, 2, 1, 2, 1, 2)
”’
5.2 集合
集合不允许重复的元素,同时,集合的元素不分前后顺序,不能使用下标访问集合,集合元素不能是列表、字典、集合
set() 创建集合 或 大括号{}
生成集合时,多余的元素将会被剔除掉
5.2.1 创建
count = {1,2,3,4,5}
print(type(count),count)
s1 = set(“hello”)
print(s1)
s2 = set([1,3,5,7])
print(s2)
value = list(s2)
print(value)
”’
{1, 2, 3, 4, 5}
{‘e’, ‘o’, ‘l’, ‘h’}
{1, 3, 5, 7}
[1, 3, 5, 7]
”’
5.2.2 基本操作
set.add() 向集合中添加一个元素
set.remove(x) 从集合当中移除指定元素x
len/sum/max/min 用法相同
set.pop() 从集合中随机数弹出并返回一个元素
5.2.3 子集与超集
s2.issubset(s1) 判断s2是否是S1的子集
s1.issuperset(s2) 判断s1是否是S2的超集
s1 & s2 交集
s1 | s2 并集
s1 – s2 差集
s1 ^ s2 补集
5.3 bytes/to_bytes()/from_bytes()
x = 65534
bufferLittle = x.to_bytes(2,’little’)
print(“little endian:”,bufferLittle)
bufferBig = x.to_bytes(2,’big’)
print(“big endian:”,bufferBig)
y = int.from_bytes(b’\xfe\xff’,’little’)
print(y)
”’
little endian: b’\xfe\xff’
big endian: b’\xff\xfe’
65534
”’
#to_bytes(n,’little’/’big’) 将整数转换成指定字节长度(这里为2),‘little’与‘big’为编码顺序,一般都是‘little’
#from_bytes() 将bytes 重新打包成int
5.4 bytearray字节数组
与bytes相比,可修改
buffer = bytearray(0x00 for x in range(10))
print(type(buffer),buffer)
buffer = bytearray(b’abcdefghijklmn’)
buffer[1] = ord(‘B’)
print(buffer)
print(buffer[3:11:3])
”’
bytearray(b’\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00′)
bytearray(b’aBcdefghijklmn’)
bytearray(b’dgj’)
”’
5.5 按位与、或、移位
& 按位与
| 按位或
<< 左移位
‘>>’ 右移位
微实践-lucky number
sName = input(‘Please enter your name:’).strip().lower()
sName = sName.split()
x = ord(‘a’)
luckynumber = 0
for i in sName:
for j in i:
v = ord(j) – x + 1
luckynumber += v
print(‘value of’,j,’=’,v)
print(“Your lucky number is:”,luckynumber)
5.6 名字绑定/copy/deepcopy
= 赋值,会将名字绑定到一个地址,传地址而非传值,包括int类型也是传递至
== 比较两个变量的值
is 比较两个变量的地址 因此需要用==比较值
a = 3
b = a
print(‘id(a)’,id(a),’id(b)’,id(b),end = ”)
b = a.copy() 只复制列表本身,复制出来的列表与原列表仍可能绑定在一个相同的子列表对象上
b = copy.deepcop(a) 将列表与其嵌套列表完整复制
#copy2.py
a = [1,2,3,[3,2,1]]
b = a.copy()
print(“id(a):”,id(a),’id(b):’,id(b))
print(‘id(a[3]):’,id(a[3]),’id(b[3]):’,id(b[3]))
b[3][2]= 99
print(a,b)
”’
id(a): 2471550621696 id(b): 2471550671744
id(a[3]): 2471520296256 id(b[3]): 2471520296256
[1, 2, 3, [3, 2, 99]] [1, 2, 3, [3, 2, 99]]
”’
#deepcopy2.py
import copy
a = [1,2,3,[3,2,1]]
b = copy.deepcopy(a)
print(“id(a):”,id(a),’id(b):’,id(b))
print(‘id(a[3]):’,id(a[3]),’id(b[3]):’,id(b[3]))
b[3][2]= 99
print(a,b)
”’
id(a): 2037795479424 id(b): 2037795559424
id(a[3]): 2037795485632 id(b[3]): 2037795558720
[1, 2, 3, [3, 2, 1]] [1, 2, 3, [3, 2, 99]]
”’
Chapter6 条件、循环
6.1 赋值/序列解包/*吸收多余值
x,y,z = ‘x’,’y’,’z’
print(x,y,z)
#x y z
numbers = 1,2,3 #numbers = (1,2,3)
a,b,c = numbers #a=1,b=2,c=3
d,e,f = [4,5,6] #d=4,e=5,f=6
g,h,i = ‘789’ #g=7,h=8,i=9
解包时,可以用*吸收多余的值
x,y,*rest = [1,2,3,4,5]
print(x,y,rest)
#1 2 [3, 4, 5]
x,*middle,y = [1,2,3,4,5]
微实践-滚雪球的复利
from matplotlib import pyplot as plt
fBalance = 10000
fRate = 0.0005
balances = []
for i in range(365*30):
fBalance = fBalance + fBalance*fRate
balances.append(fBalance)
print(’30年后连本带利欠款总额:%.2f’%fBalance)
plt.plot(list(range(365*30)),balances)
plt.title(“Loan balance grow by days”)
plt.show()
微实践-程序断点调试
转载自CSDN-专业IT技术社区
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。