Python学习——《笨方法学Python3》笔记(一)

习题 1~习题 22

学了什么

格式化字符串:

1
2
w = f"What I want is {you}."
# 此处you为变量名,格式化字符串会用变量替换对应的位置

字符串填充:

1
2
3
4
w = "What I want is {}."
w.format("R") # 或者其他变量
# 通过字符串的format方法填充对应位置
# '+'可以用来拼接

print()

1
# 缺省最后一个参数 end='\n' ,默认是换行

引入模块(库)

1
2
3
4
from sys import argv
script, file_name = argv
# 解包
# argv[0]为程序运行的名称,后面变量在命令行中输入,个数需要匹配,否则报错

文件操作

1
2
3
4
5
6
7
8
9
10
11
# oepn()第一个参数为字符串,是文件名,第二个参数操作方式,缺省为"r"只读
# open()的返回值为一个文件对象
file_name = "eddy.txt"
target = open(file_name, "r")
in_data = target.read() # 读取内容
target.close() # 最后要关闭

file_name = "eddy.txt"
in_data = open(file_name, "w").write("Well, Allright")
# 'w'写入
# 这种操作写入完成后会自动关闭文件,无需再写close(而且也不知道咋写,没名字)

习题 23~习题 39

循环、列表与字典

循环

1
2
3
4
5
6
# 少用while多用for,尤其是已知循环次数的时候
for i in range(3,5)
# range 左闭右开
for i in change
# change为列表,后面会介绍
# for虚幻的时候i就被定义了,每次碰到则赋值为当前循环的元素值

列表,有的地方叫做数组,这里按照 python 的习惯说法称之为列表。列表支持按照角标随机访问。

1
2
3
4
5
6
7
8
_count = [1,2,3,4,5]
fruits = ['apples','oranges','pears','apricots']
change = [1,'pennies',2,'dimes',3,'quarters']
# 列表添加末尾(类似push_back)
new_word = 'new'
change.append(new_word)
# 列表中的列表,二维列表
[[1,2,3],[4,5,6]]

字典(类比 C++STL 里的 map)实际上就是映射,不过这里不用在乎类型。

1
2
3
4
5
6
7
8
9
# 注意大括号
states = {
'Oregon': 'OR',
'Florida': 'FL',
'New York': 'NY'
}
# 对于字典的循环
for i,j in list(states.items()):
print(i,j)

字典的 get 方法(尤其注意第二个参数的缺省值)

1
2
3
4
5
6
7
8
9
10
11
12
# 描述
# Python 字典 get() 函数返回指定键的值,如果值不在字典中返回默认值。
# 语法
# get()方法语法:

dict.get(key, default=None)
# 参数
# key -- 字典中要查找的键。
# default -- 如果指定键的值不存在时,返回该默认值值

city = cities.get('TX', 'Does Not Exist')
# 所以书目中cities字典中虽然没有键值为'TX'的映射,但是设置了未查到的返回值。 此时city的值为'Does Not Exist'

关于切片 多说点

如此,我们会得到从 starting_index 对应元素开始,到 ending_index 对应元素结束,但是不包括 ending_index 对应元素,所组成的子序列的内容。起止索引都是可选的选项,如果没有提供或者为 None,那么开始索引默认为 0,结束索引默认为序列最末尾的索引。切片的访问模式,有第三个值,类似于步长,其访问类似下面代码

1
2
3
4
5
>>> ('a','b','c','d')[0:3:2]
('a', 'c')

food='appale pie'
print(food[-3:7])

后面,-3 其实是 6 的位置

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
import numpy as np

a = np.array([[-1,2],[2,3]])
b = np.array([[3,4],[4,5]])
print '\n a:\n',a
print '\n b:\n',b

##转置
print '\n a transpose:\n',a.T

##共扼矩阵
#print '\n a H:\n',a.I

##逆矩阵
print '\n a inv:\n',np.linalg.inv(a) # 求逆

##转置
print '\n a transpose:\n',a.T

# a + b,矩阵相加
print "\n a+b: \n",a+b

# a - b,矩阵相减
print "\n a-b: \n",a-b

#2x2 矩阵,矩阵相乘
print "\n a mul b:\n",a.dot(b.T)

#2x3矩阵,矩阵点乘
print "\n a dot b: \n",a*b

#2x3矩阵,矩阵点除
print "\n a/b \n:",a/np.linalg.inv(b)

#求迹
print "\n a trace",np.trace(a)

#特征,特征向量
eigval,eigvec = np.linalg.eig(a)
#eigval = np.linalg.eigvals(a) #直接求解特征值

print "\n a eig value:\n",eigval,
print'\n a eig vector:\n',eigvec