这两个月经历了突然的疫情隔离,研究生开题,学术论坛,研究生创新项目等等……终于在这一周尘埃落定了,得以静下心来整理整理自己的一些学习笔记。之前我用过一些python编写的项目,我也只是依葫芦画瓢或者在demo上直接改,还没有系统性地学习过这门编程语言。这里就再记录下自己自学python的一些入门时的笔记,以及记录下几个机器学习方面的python库的使用方法。
1. 六大数据类型
很多编程语言的数据类型是相通或者有类似之处的,学习一门编程语言最基础的就是熟悉它的数据类型,python有6种标准数据类型。
1.1 Numbers(数字类型)
数字类型简单来说就是数值,在python中是不可变数据类型。python的Numbers数据类型又可以分为以下几个子类型
- 整型(int): 通常称为整型或整数,是正或负整数,不带小数点。python3整型没有大小限制,可以当作python2的Long类型使用,不像其他编程语言有 int,smallint,short,long,longint,long 等。
- 浮点型(float): 浮点型由整数和小数两个部分组成,只能以十进制表示或者科学计数法表示,有长度限制。
- 布尔型(bool): 布尔型就是逻辑,使用True和False表示。注意一下在上下文环境中,True当做1,False被当作0。
- 复数型(complex): 复数型由实数和虚数部分构成,可以用a + bj或者complex(a, b)表示,a和b都是浮点型。
1.2 String(字符串)
String是python中最常用的数据类型,说白了就是字符组成的一串内容。可以使用成对的单引号或者双引号(“或‘)创建字符串,用三个单引号或者双引号使字符串内容保持原样输出,可以包含特殊字符。在python中字符串是不可变变量。
1.2.1 字符串索引
索引就是字符的位置序号,使用[]进行字符串索引,python有两种索引方式,下标索引越界均会报错。
正向索引:字符串长度为n,从0开始,索引值范围0 ~ n-1
反向索引:字符串长度为n,从-1开始,索引值范围-1 ~ -n
1.2.2 字符串切片
切片意思就是取出字符串中你想要的内容。切片的标准写法是两个冒号加三个数字,如a[1:2:3],需要注意切片是左闭右开的取值,切片越界是不会报错的。
第一个数字表示切片的起始位置(省略就是从第 1 个字符开始,也就是0号位)
第二个数字表示切片的终止位置(不包括这个位置的字符,右开表现在这里;可省略,省略是最后一个字符结尾且包含)
第三个数字表示步长(缺省值为1,此时可以不写第二个冒号)
1.2.3 转义
如果使用带有特殊字符的字符串,则需要进行转义,使用反斜杠 \ 进行字符转义。
转义字符 | 描述 |
---|---|
\‘ | 表示单引号 |
\“ | 表示双引号 |
\n | 换行 |
\t | 制表符(即四个空格) |
\b | 退格(删除前面一个字符) |
\\ | 表示反斜杠 |
在字符串前加 ’r‘ 可以使整个字符串原样输出,不会被转义。
1.2.4 格式化输出和占位符
格式化输出意思是按照格式说明所描述的文字规则进行输出,占位符的使用是格式化输出的表现形式。占位符的意思是替后面的变量占住这个位置,因此所有占位符最后都需要格式化定义占位符的映射(也就是解释占位符代表的东西)。
这里记录一下最常用的占位符
占位符 | 描述 |
---|---|
%s | 针对所有数据类型 |
%d | 针对整型数据类型 |
%f | 只针对浮点数 |
%.xf | 浮点数精确到小数点后x位,注意有个点 |
可以看到两种输出方式得到的结果是一样的,使用占位符进行格式化输出更简介,且更常用。
1.2.5 常用函数
python还有很多数据操作的函数,这里记录最常用的几个,以后继续补充
type(): 查看数据类型
len(): 查看字符串长度
int(): 将数据类型转换为整数,如int(“1234”)得到结果整型1234
float(): 转换为浮点数,如float(“12.34”)得到结果浮点型12.34
str(): 转换为字符串,如str(123456)得到结果“123456”
1.3 List(列表)
列表数据可以存储任意一种数据类型,是python特有的数据类型,列表用来存储由多个值构成的序列,可以嵌套其他列表,是一种可变数据类型。
不同数据项之间由逗号分开,整体放在一个方括号[]里,就可以创建列表,如ls = [1, 2, 3, 4]就是一个列表。
1.3.1 修改列表元素
因为列表是可变数据类型,因此可以用索引或者切片的方法修改列表中的元素。
可以使用del删除列表或者列表中索引为某个数的元素。
1.3.2 列表生成式
除了直接创建列表,还可以使用列表生成式直接生成列表。
1.3.3 列表的方法函数
记录一下操作列表的常用方法,这里就不演示了。
方法 | 描述 |
---|---|
list.append(obj) | 列表末尾添加新的对象 |
list.count(obj) | 返回某个元素在列表中出现的次数 |
list.extend(seq) | 在列表末尾添加另一个列表的所有元素 |
list.index(obj) | 返回第一个匹配的的索引值 |
list.insert(index, obj) | 在指定索引插入对象 |
list.pop(index) | 移除指定索引的值,并返回该值 |
list.sort() | 对原列表进行升序排序(纯数字才可以),降序需要添加reverse=True |
list.reverse() | 反转列表元素 |
list.remove(obj) | 移除第一个匹配的某对象 |
1.4 Tuple(元组)
元组也是python的一种特殊数据类型,和列表很相似,但是是不可变对象。如果想创建一个全局都不变的变量,可以考虑创建元组。
元组中的元素用逗号分隔,一般要使用小括号(小括号不是必须的,只是为了方便理解和美观)。
元组中如果只有一个元素,需要在元素后加逗号。否则无法判断这是一个元组还是一个整型数据。
同样元组数据也可以进行索引和切片,这里不赘述。
1.4.1 元组和列表的互相转化
元组转化列表使用list()函数,列表转化元组使用tuple()函数。
1.4.2 结合元组的列表生成式
元组不能通过和列表一样的生成式来创建,但是列表生成式中可以加入元组。
1.5 Set(集合)
集合是一个无序的不重复元素序列,可以使用大括号{}或者set()函数创建集合,但是创建一个空集合必须要用set()而不是{},因为{}是用来创建一个空字典的。
因为用的不多,简单记录一下,集合有三个特点
集合的元素是无序的。 如:{1, 2, 3}和{1, 3, 2}是完全相等的。
集合的元素是不重复的。 如:{1, 1, 1}只会保留一个值,打印结果为{1}。
集合的元素必须是不可变数据类型(数字、字符串和元组)。 如:{1, [1, 2]}打印结果会报错,因为列表是可变数据类型。
1.6 Dictionary(字典)
字典用的比较多,其存储特点是键值对的形式出现(Key-Value),一个键对应一个值,每个键值对用冒号隔开,每对键值对用逗号隔开。字典也可以存储任意类型数据。
需要注意的一点,在字典数据类型中,键必须是唯一的,但是值可以不唯一,值可以取任何数据类型,但是键必须是不可变数据类型。
1.6.1 字典创建和修改
字典数据可以通过花括号直接创建,或者通过dict()函数创建(非空)。
通过访问键来访问对应的值,添加、删除和修改的方法均类似。
1.6.2 字典的方法函数
记录一下常用的字典方法函数,就不演示了,具体用到的时候可以查。
方法 | 描述 |
---|---|
dict.keys() | 返回所有键的列表dict_key对象,可以转换成列表、元组和集合 |
dict.values() | 返回所有值的列表dict_values对象,也可以转换成列表、元组和集合 |
dict.items() | 返回所有键值对的列表dict_items对象,同样可以转换成列表、元组和集合 |
dict.clear() | 清空字典,无返回值,只剩下空字典 |
dict.get(key, default=None) | 返回字典中指定key的value值,如果key不存在,则返回default值 |
dict.pop(key, default=None) | 删除指定的key并返回对应的value值,如果key不存在,则返回default值 |
简单小结一下关于python数据类型的注意点:
1.可变数据类型:List、Dictionary、Set
2.不可变数据类型:Tuple、Numbers、String。不可变体现在索引这些变量名的元素不可被重新赋值
3.下标索引:String、List、Tuple支持下标索引,Dictionary是通过Key值索引
4.切片:String、List、Tuple支持切片操作