写在前面:这篇笔记是由本人原创(也是第一篇原创,萌新.jpg),兄弟萌如果觉得不错的话,可以点个关注或收藏,方便以后查阅呀。
由于疫情的原因,今年考研复试推迟,得以多出很多准备复试的时间。在此期间(被困武汉啦,痛苦.jpg),我自学了PyThon,为了总结这段时间的学习成果,同时方便今后的查阅,遂写下这篇PyThon入门学习笔记。
几乎任何一门高级编程语言,都由两部分组成:语法(语言法则)和函数库(如C++的STL),PyThon也不例外。目前,PyThon之所以非常火热的原因之一,就在于它有丰富且功能强大的标准库和第三方库(如科学数值计算库NumPy、Pandas,计算机视觉库OpenCV,深度学习库Keras、TensorFlow,绘图库Matplotlib)。由于时间有限,这篇笔记只包含PyThon的语法部分和部分内置库(标准库)。
本人使用的调试工具是Jupyter Notebook在线调试工具,具体使用方法参考了以下这篇良心佳作:
Jupyter Notebook介绍、安装及使用教程
PyThon共有4个基本数据类型:整型(int),浮点型(float),字符串(str),布尔型(bool),均以对象的形式存在。
默认无小数点的数据为整型(int),如var = 123
,123被默认为整型常量。
默认有小数点的数据为浮点型(float),如var = 123.
或123.0
,123.被默认为浮点型常量。
PyThon字符串可以被单引号、双引号或三引号包裹,如'abc'
、"abc"
、'''abc'''
单引号或双引号只能包裹单行字符串,而三引号可以包裹多行字符串。
只有真值(True)和假值(Flase),注意PyThon区分字母大小写,首字母均大写。
跟其他高级语言不一样,PyThon是一种动态语言,变量无需定义,直接赋值,可理解为是赋值对象的标签或引用(即不是赋值对象本身)。动态是指:变量的类型可变,取决于赋值对象的类型。
如:int (var)
bool(var)
:非0数字或非空串返回True,否则返回False
var1 + var2
var1 - var2
var1 * var2
9/5
:返回浮点型商1.8
9//5
:返回商的整数部分1
9%5
:返回余数4
计算x的y次幂:
方法1:x ** y
方法2:
import math
math.pow(x, y)
计算x的y次根方:
import math
math.pow(x, 1/y)
特殊地,计算x的平方根:
方法1:x ** 0.5
方法2:import math
math.pow(x, 0.5)
方法3:import math
math.sqrt(x)
==
!=
<、<=、>、>=
注意:PyThon中使用英文单词表示逻辑运算,没有逻辑运算符&&、||、!。
and
or
not
!=
max(DS对象)
min(DS对象)
str_var = 'xiaoMing' 或 “xiaoMing"
单引号或双引号包裹单行字符串
#三引号包裹多行字符串
str_var = '''xiaoMing
xiaoHong'''
整型int转换为str:str(123)
浮点型float转换为str:str(123.0)
布尔型bool转换为str:str(True)
或str(False)
转变原本字符的含义:
\n:换行
\t:制表
':单引号
\:反斜杠
'xiao' + 'Ming'
不会修改’xiao’本身
'xiao' += 'Ming'
会修改 'xiao’本身
'ab' * 3
返回 字符串 ‘ababab’
english = 'abcdefg'
,注意以下切片操作均不会改变english本身。
english[0] = 'a'
第一个元素索引为0
english[-1] = 'g'
最后一个元素索引为-1
english[0: 2]或english[: 2] = 'ab'
从前切
english[-3: ] = 'efg'
从倒数第3个开始一直切到最后
english[-3: -1] = 'ef'
前闭后开
english[: ] = 'abcdefg'
切整个字符串
english[0: 4: 2] = 'ac'
加步长2
english[ : : -1] = 'gfedcba'
或 glish[ : : -2] = 'geca'
负步长从后往前切,只支持整体切片
english = 'abcdefg',
注意以下函数或方法不会改变english本身,只会返回一个新串对象。
len(english) = 7
字符串.split()
默认以空格为分隔符,返回一个子串列表。
字符串.split('a')
以字母a为分隔符,返回一个子串列表。
以此类推。
字符串.strip()
默认去掉字符串前后所有空白符 (包括空格、\n、\t、\r、\f)。
字符串.strip('.')
去掉字符串前后所有的小数点。
字符串.strip('a')
去掉字符串前后所有的字母a。
以此类推。
字符串.upper()
转大写
``字符串.lower() 转小写
字符串.capitalize()
字符串.rjust(n)
不足n位填充空格
字符串.center(n)
字符串.replace(被替换子串,替换串)
如:english.replace('cd', 'qq') = 'abqqefg'
查找english中所有的’cd’并替换为 ‘qq’。
字符串.count(子串)
计算子串的数量
字符串.startswith(子串)
返回True或False
字符串.endswith(子串)
返回True或False
字符串.find(子串)
返回子串第一次出现的位置索引(从左数)
字符串.rfind(子串)
返回子串第一次出现的位置索引 (从右数)
','.join(子串列表)
用逗号将子串连接成一个新的字符串
字符串.join(子串列表)
用指定字符串将子串连接成一个新的字符串
重要特性:可以包含不同类型的元素,但元素有序,用[ , ]表示。
方法1:直接创建,[123, 123.4, 'abc', True]
。[]代表空列表。
方法2:list()
函数将其他数据结构对象(如字符串、元组、集合等)、迭代器、生成器转换为列表
如:list(range(5))
返回[0, 1, 2, 3, 4]
列表元素也可以是列表,提取子列表元素使用双重索引。
类似于字符串的切片操作,分为整数索引切片和切片索引切片两种,不同之处在于,无论是整数索引还是切片索引,字符串切片返回的均是子串,类型为str。而列表整数索引返回指定元素,切片索引返回子列表。
可使用切片索引同时对多个元素修改
如a[ : 2] = [100, 200]
方法1:a + b
,返回新列表,但a和b不变
方法2:a.extend(b)
将b的元素添加至a的末尾,a变b不变
方法1:a.append(新元素)
将新元素添加至末尾,返回None
方法2:a.insert(index, 新元素)
将新元素添加至指定位置
方法1:a.pop()
默认删除最后一个元素并将其返回
方法2:a.pop(index)
删除指定位置元素并将其返回
方法3:del a[index]
删除指定位置元素但不作返回
方法4:a.remove(元素值)
删除指定元素值,返回None
元素值 in a
返回True或False
a.index(元素值)
类似字符串的find()方法
a.count(元素值)
a.sort()
len(a)
重要特性:无序,用{key1:value1, ...}
表示,每一个元素的键key互不相同。
方法1:直接创建,{k1: v1, k2: v2, ...}
,{}代表空字典。
方法2:dict()
将其他类型的数据结构、迭代器、生成器转换为字典。
因为字典无序,所以没有切片操作。
方法1:a[key]
做右值时,代表对应的value,取值。如果不存在,会报KeyError异常。
方法2:a.get(key)
,如果不存在,默认返回None
方法3:a.get(key, return_default)
,如果不存在,返回指定return_default。
a[key] = value
,如果存在key,则修改其值,如果不存在,则添加一个键值对。
a.update(b)
将字典b中的键值对添加至字典a中,a变b不变。
del a[key]
删除指定键值对
a.clear()
清空字典a中元素,使a变为空字典{}
key in a
返回True或False
a.keys()、a.values()、a.items()
分别返回键、值和键值对元组组成的列表迭代器 (即封装起来的列表)
重要特性:元组一旦指定便不可改变(元素的值和顺序均不可改变),因此元组对象可以作为字典或集合的key,而列表对象不能;元素类型可以不同;有序 (可以进行切片操作)。
方法1:直接创建:注意PyThon解释器通过逗号,判断是否是一个元组,而不是小括号()
多元素:(123, 123.4, 'abc')或123, 123.4, 'abc'
单元素:(123,)或123,
空元组:()
方法2:tuple()
将其他类型数据结构、迭代器、生成器转换为元组。
a = (1, 2, 3)
b, c, d = a
相当于元组a赋值给由b、c、d组成的元组,b = 1, c = 2, d = 3。
a, b = b, a
等价于a与b交换数据。
重要特性:元素值唯一;无序;用{key1, key2, ...}
表示。