python学习笔记(自学/速成)

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()

python学习笔记(自学/速成)_第1张图片

微实践-程序断点调试

你可能感兴趣的:(python,python,爬虫)