Python基础01 数据类型
前言
本文介绍Python中基本的数据类型:
- 字符串、数字
- 列表
- 字典
- 集合
- 元组
以及一些常用的处理小技巧。
1. 字符串、数字
Python中字符串(str)的处理对于没有任何变成经验的同学可能有些苦恼,如下
1 | s1 = '1222' |
int :整数类型,将小数抹除
- float :浮点数类型,因为二进制进位的关系数据并不准确的
以上就是提醒各位,对数据处理的时候,一定要留心数据的类型
1.1 字符串中的序号
字符串的序号可以让你快速取得一串字符中任意位置的任意字符,有如下三种基本方式:
1 | s = 'Attention Is A Talent' # 首先创建一个字符串 |
有如下需要注意的几个地方:
在python中我们使用引号包裹需要的字符串内容
字符串的序号是从 0 开始定义的,所以上面的s有21个字符,而方括号内的取值范围是[0,20], 细心你的肯定发现了,空格数也算进去了。没错空格也算一种特殊的字符。
第二种取值方式我们称之为切片,python中的切片方式等价数学上的**左闭右开~[x, y)**,上面字符s[:20],是取得s[20]号位左边的全部值,但是不会包含s[20]。
当然是用s[0:20] 也是等价的。
步长 即第二种方法的第三个式子,是用步长就是字面意思,每走n步取值。
s[::2]就是 s[0]第一步, s[1]第二步(存储),s[2]第三步,s[3]第四步(存储)….
倒序是字符串的另一套序号,它有很多应用场景,比如定义一个很长的字符串你可能需要用s[1222222]才能取得这个值,但是是用s[-1]就很方便。
当然,需要注意倒序是从[-1]开始的。
1.2 特殊字符
'\n'(换行) '\b'(回退) '\r'(光标回到本行行首) '\t'(相当于八个空格,两个table)
以上就是几个常见的特殊字符,其中特别需要注意的是路径中的斜杠如遇到 \nigger 计算机可能就无法明白你输入的是 ‘igger’,还是含有n的字符串。有以下两种处理方式:
'\\nigger'
r'\nigger'
1.3 字符串的运算以及常用函数
运算
1 | s1 + s2 # 将两个字符串连接 |
函数
1 | s = ' Attention,Is,A,Talent ' |
- 上面我们以逗号为分隔符使用split函数,但是注意中英文的逗号是有区别的,其他有些符号也一样,需要注意。
- 上述中的replace几乎可以代替center函数,但是注意strip只能处理字符串的两端
- 如join函数返回的结果,再次提醒空格也算是字符
- 最后,上述操作产生都是一个新的对象,即调用s后返回的是原本的字符串,并不是函数作用后的结果。
需要s = s.replace('tion', '')
赋值才‘生效’。
1.4 数字函数
1 | pow(x, n) #为x的n次方 |
1.5 格式化字符串
在我们得到一个数据之后,经常需要对其做保留多少位小数、居中打印、靠右输出、等操作,我们一般叫使其格式化。在python中有三种格式化填充字符串的方式:
1 | # format方式 |
format格式化将按照顺序填入上面字符串{}的空位,{:.2f}表示此处保留两位小数
1 | # f方式 |
f格式化就是对format方式的简化版
1 | # %方式 |
这种方式很老了,推荐使用f方式,非常简洁。
以下不是必看内容:format填充方式
1 | chr(Unicode) #返回Unicode对应的字符 |
填充物若为chr(12222),等特殊字符
1 | f'{chr(12222):^10}' |
如上{chr(12222):^10} 将chr(12222)对应的字符输出在中间,左右两侧填充空格。
也可用等号等其他符号填充,或者使用>大于号使结果置右。
2. 列表
列表跟上文中提到的字符串很像,或者说字符串是一种特殊的列表,其所有元素都是字符串。
python中的列表(list),在我的印象里几乎可以装任何的东西: 字符串、数字、甚至你定义的函数…
列表是一种非常好用的数据类型,也是我们最常使用数据类型,以下概要对其简要介绍并补充几个判断符。
2.1 概要
列表同字符串也有正反序号下标,切片操作,不同的是列表可以含有各种类型的数据
1 | ls = ['Attention Is A Talent', 100, '% '] |
上面我们使用双等号作为判断符,等价询问python 是否 ls[0] = ls[-3]
- 还有 != 、>=、<=、等
上面我们使用in作为判断词,等价询问python 是否 ‘A’ 在 ls
- 还有 not in,or,and等
第二点,我们使用了str(),它是一个函数,将对传给它的值做字符串化的处理
- int类型的 100 ——> ‘100’ 即数字100变成字符串了
2.2 列表的运算以及常用函数
运算
1 | ls = ['Attention Is A Talent', 100, '% '] |
- 注意,列表的加法操作只能在列表跟列表之间。
- 如上图使用 ls + ls[0] 将会报错
函数
1 | # 下面x表示单个元素、ls表示列表0号、ls1表示列表1号 |
(这里加些列表复杂一点的方法,如果没有了解python中的字典、元组数据类型,可以在下文中了解后再看)
1 | ls = [('tom', 95), ('jerry', 80), ('mike', 99), ('john', 70)] |
第一部分中为ls的sort方法配置参数
- reverse 表示逆置,如果对象没有‘大小’,则按照原来的顺序直接逆置
- key 参数表示排序根据此值的大小,这里我们就是以每个元组的第二个值作为value排序
第二部分是使用python中的sorted和sort函数
第一个参数表示传入的可迭代数据类型(就是列表这种含有很多元素,可以一个一个出来的数据类型)
第二个参数 同上面的key
sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
第三部分使用了enumerate函数,这个函数主要是为元素添加下标,方便一些特殊场景处理
- enumerate函数返回一个含有位置下标的元组类型,为(index,element)形式
2.3 列表应用的例子
1 | ls = ['Alice', 'Bob'] |
3. 字典
Python字典(dict)是另一种可变容器模型,可存储任意类型对象。如字符串、数字、元组等其他容器模型
因为字典是无序的所以不支持索引和切片
注意:
- key不可以重复,否则只会保留第一个;
- value值可以重复;
- key可以是任意的数据类型,但不能出现可变的数据类型,保证key唯一;
- key一般形式为字符串。
3.1 基本属性
1 | dic.keys() # 返回字典中所有的key |
3.2 基本函数
1 | dic.setdefault(k,value) |
以下不是必看内容:dic.get(key, init_value)
1 | ls = [('tom', 95), ('tom', 95), ('tom', 95), ('jerry', 80), ('mike', 99), ('john', 70)] |
get第一个参数为对应的键,第二个参数为键对应的初始值。
get方法将键对应的值初始化为0,以后每见一次加一次,在文本统计时经常使用。
相对于dic[i],dic.get(i)不会报错,而它每见一次加一次而不是覆盖,明显速度会比前者慢。(但是不是大量数据都差不多。)
4.集合
在Python中集合(set)元素之间无序,每个元素唯一,不存在相同元素集合元素不可更改,不能是可变数据类型
4.1 创建和运算
1 | 使用两种方式建立 |
1 | S | T 并,返回一个新集合,包括在集合S和T中的所有元素 |
4.2 函数
1 | len(s) #返回序列s的长度,即元素个数 |
其中len()、min()、max()函数是内置的通用函数
5. 元组
python中的元组(tuple)是一种序列类型,一旦创建就不能被修改 ,使用小括号 () 或 tuple() 创建,元素间用逗号 , 分隔 。
5.1 创建和取值
1 | creature = "cat","dog","tiger","human" |
元组的取值操作跟列表一样
1 | creature = "cat","dog","tiger","human" |
5.2 函数
1 | set(x) # 将其他类型变量x转变为集合类型 |
总结
同上文我们定义的字符串、列表、字典,我们按照见名知意的原则,将其赋值给s、ls、dic。这样做是为了程序的可读性。今后我们在写程序的时候会定义很多变量,变量一多了就容易搞混了,顺藤摸瓜找着效率又很低,所以给你的变量取一个好名字,是一个很划算的决定。
- 举个例子
train_df = pandas.DataFrame('../train.csv')
中的 train_df表示这个是个训练数据,其数据类型为pandas的DataFrame结构。
- 举个例子
此外在操作数据的时候一定要注意数据类型,根据数据的特性选择合适的数据类型。
最后,python最好用的地方在于有各种各样的库供你选择,而掌握它基础的数据结构是第一步,下面我们将讲解函数以及类,最后介绍两个常用的库,介绍一些如何快速掌握一个库的通法。