看了b站生姜DrGinger大佬的数学要素系列视频(https://space.bilibili.com/513194466),惊为天人,决定开始拜读,以下是第一章学习笔记。
第一章 万物皆数 | (数学要素) | 从加减乘除到机器学习
学习之前需要掌握的一些python基础 | 运算符、数据类型和常用函数
python3中的算术运算符
+ # 加号
- # 减号
* # 乘号
/ # 除号,python2中结果弃余数取整,python3中结果为浮点数。
% # 除法取余数
x = 3 # 程序自动寻找一块内存空间,将内存空间命名为x,并在x这个内存空间内存储一个值:3
x # 输入赋值后的变量名,变量的值会显示在控制台或者终端
x = 3
x
3
a = 3
b = 4
a + b #Python可以直接计算加法
7
a = 3
b = 4
a - b #减法
-1
a = 3
b = 4
a * b #乘法
12
a = 3
b = 4
a / b #除法(python3)
0.75
上面这个计算的结果是浮点数,在python中我们可以利用type()
检验变量的类型,int
就是整型,float
就是浮点型
x = 3.5
type(x)
float
x = 4
type(x)
int
a = 3
b = 4
a % b #取余
3
一个小问题
x = 3
y = 4
x
y # 在多个行输入变量名,程序只会展示你输入的最后一个变量的值
4
# 为了解决上述问题,我们使用print()函数
x = 3
y = 4
print(x)
print(y)
3
4
布尔值和比较运算符
无论是在数学计算还是编程,我们经常需要判断数与数之间的大小关系,为此要用到比较运算符和一种特殊的变量类型:bool变量。
-
> > > 大于
-
< < < 小于
-
> = >= >= 大于等于
-
< = <= <= 小于等于
-
= = == == 等于
-
条件为真(布尔值):
True
-
条件为假(布尔值):
False
a = 5
b = 6
a > b
False
a = 5
b = 6
type(a > b)
bool
字符串
以上,已经接触过python中的三种数据类型:整型变量int
,浮点型变量float
和布尔型变量bool
下面我们简单介绍一下字符串类型str
x = "I‘m learning Python."
y = 'Great language.'
x,y
('I‘m learning Python.', 'Great language.')
x = "I‘m learning Python."
y = 'Great language.'
a = type(x)
b = type(y)
print(a,b)
print(x,y)
print(x + y)
<class 'str'> <class 'str'>
I‘m learning Python. Great language.
I‘m learning Python.Great language.
逻辑运算符
- and 且
- or 或
- not 非
- is 是
列表
# 列表
list = [1 , 2, 3, 4]
print(type(list))
print(list)
print(list[3])
<class 'list'>
[1, 2, 3, 4]
4
# append可以添加元素,该元素可以也是列表
list.append(5)
print(list)
list.append([3,6,7])
print(list)
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, [3, 6, 7]]
# extend可以用来添加一个元素
list.extend('f')
print(list)
# extend也可以通过列表形式添加多个元素
list.extend([3,4,3])
print(list)
[1, 2, 3, 4, 5, [3, 6, 7], 'f']
[1, 2, 3, 4, 5, [3, 6, 7], 'f', 3, 4, 3]
# print(list[a:b]),打印列表中的第a+1到第b+1个元素
print(list[3:7])
[4, 5, [3, 6, 7], 'f']
list = [0,3,5,9,7]
print(list)
# list.sort(),对列表数据进行从小到大的排序
list.sort()
print(list)
# list.sort(reverse =True),让列表中的数字从大到小排列
list.sort(reverse=True)
print(list)
del list # 清除变量
[0, 3, 5, 9, 7]
[0, 3, 5, 7, 9]
[9, 7, 5, 3, 0]
元祖:不支持修改的元素
y = (4,6,5)
y[1] = 4
y
执行后,会提示如下错误:
TypeError Traceback (most recent call last)
~/name.py in <module>
1 y = (4,6,5)
----> 2 y[1] = 4
3 y
TypeError:'tuple' object does not support item assignment
也就是说,元组类型的元素(tuple)不支持重新赋值。
字典:具有映射关系的数据结构
wages = {
'steve':1000,'red':120,'white':230}
print(wages['steve'])
RGB = {
'red':(255,0,0),'green':(0,255,0),'blue':(0,0,255)}
print(RGB['red'])
# 字典增加元素
RGB['black']=(255,255,255)
RGB['white']=(0,0,0)
print(RGB['black'])
# 删除字典元素
del RGB['black']
# 获取某元素的值,没有则返回空值None
print(RGB.get('black'))
1000
(255, 0, 0)
(255, 255, 255)
None
range()函数的使用
# range函数所有参数均为整数,结果返回一个range类型的整数等差序列,一般用在循环结构中。
# 利用a=list(range())可以创建一个数表a,用来储存range()中的值。可以用三种方法使用range()
# 第一种,range(stop),初始值为0,终止值为stop-1,公差为1,此时,返回序列为{0,1,2,3, … ,stop-1}
a = list(range(20))
print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
# 第二种,range(begin,stop),初始值为begin,终止值为stop-1,公差为1,此时,返回序列为{begin,begin+1, … ,stop-1}
a = list(range(0,10))
b = list(range(3,10))
print(a)
print(b)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[3, 4, 5, 6, 7, 8, 9]
# 第三种,range(begin,stop,step),初始值为begin,终止值小于stop,公差为step。
# 此时,返回序列为{begin,begin+step,begin+2*step, … ,x},x=begin+n*step,stop-step<=x<stop
a = list(range(1,9,3))
print(a)
b = list(range(8,2,-1))
print(b)
c = list(range(8,2,-2))
print(c)
# 当确定区间【2,8】后,由于2<8,公差取-1后,该序列为空集,显示为[]
d =list(range(2,8,-1))
print(d)
[1, 4, 7]
[8, 7, 6, 5, 4, 3]
[8, 6, 4]
[]
zip()函数的使用
利用zip()函数,我们可以定义一个映射关系
y = f ( x ) y=f(x) y=f(x)
将函数的自变量a取值做成列表: a = [ x 1 , x 2 , … , x n ] \displaystyle a=[x_1,x_2, \dots, x_n] a=[x1,x2,…,xn]
将对应的函数值b也做成列表: b = [ y 1 , y 2 , … , y n ] \displaystyle b=[y_1,y_2, \dots,y_n] b=[y1,y2,…,yn]
则f=zip(a,b)会返回一组元祖类型数据,其值为 ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x n , y n ) (x_1,y_1),(x_2,y_2),\dots,(x_n,y_n) (x1,y1),(x2,y2),…,(xn,yn)
在python3版本中,使用print(f),会给出f这个映射在内存中的地址,如果想观察f的值,需要使用list()函数做转换
如果给定的x的数与y的数目不相等,多余的数不会出现在映射中。
# a、b中的元素可以是一维的
a = [1,2,3,5,6]
b = [4,5,6,7,8]
f = zip(a,b)
print(f)
print(list(f))
<zip object at 0x7f509473b840>
[(1, 4), (2, 5), (3, 6), (5, 7), (6, 8)]
# a中的元素可以是多维的
a = [(1,4),(2,3),(5,7)]
b = [6,8,9]
f = zip(a,b)
print(f)
print(list(f))
<zip object at 0x7f509473b900>
[((1, 4), 6), ((2, 3), 8), ((5, 7), 9)]
# b中的元素可以是多维的
a = [(1,4),(2,3),(5,7)]
b = [(6,6),(7,9),(8,5)]
f = zip(a,b)
print(f)
print(list(f))
<zip object at 0x7f509473e5c0>
[((1, 4), (6, 6)), ((2, 3), (7, 9)), ((5, 7), (8, 5))]
第1节 数字分类:从自然数到复数
- 集合
集合 (set) ,简称集,是指某种具有特定性质元素的总体。
- 自然数和整数
自然数集 (the set of natural numbers) 记作 N \mathbb{N} N
N = { 1 , 2 , 3 , … , n , … } \mathbb{N}=\{1,2,3,\dots,n,\dots\} N={ 1,2,3,…,n,…}
整数集 (the set of integer) 记作 Z \mathbb{Z} Z
Z = { 0 , − 1 , + 1 , − 2 , + 2 , − 3 , + 3 , … , − n , + n , … } \mathbb{Z}=\{0,-1,+1,-2,+2,-3,+3,\dots,-n,+n,\dots\} Z={ 0,−1,+1,−2,+2,−3,+3,…,−n,+n,…}
- 有理数与实数
有理数集 (the set of rational numbers) 记作 Q \mathbb{Q} Q
有理数 (rational numbers) 都可以表示成 q = a b ( ( a ∈ Z ) ∧ ( b ∈ Z / 0 ) ) \displaystyle q=\frac{a}{b}((a\in \mathbb{Z}) \wedge (b\in\mathbb{Z}/0)) q=ba((a∈Z)∧(b∈Z/0))的形式。
给定单位长度,通过几何方法可以作出任意有理数长度的线段,也就是说,有理数是可以准确测量的,因此有理数又称可公度数,可以被写成无限循环小数的形式。
与之对应,不能准确测量的数,叫做不可公度数,即无理数 (irrational numbers) 无理数都是无限不循环小数。
有理数集和无理数集,组成实数集 (the set of real numbers) 记作 R \mathbb{R} R
- 复数
复数 (complex numbers) 包括实数 (real numbers) 和虚数 (imaginary numbers) ,复数集 (the set of complex numbers) 的记号为 C \mathbb{C} C
复数的具体形式如下:
a + b i a+bi a+bi
a a a和 b b b是实数, i i i是虚数单位 (imaginary unit)
i 2 = − 1 i^2 = -1 i2=−1
python3 math库中的特殊常量
m a t h 是 P y t h o n 的 库 math是Python的库 math是Python的库
欧拉常数,即自然常数<