一、数据类型
数据类型分为两大类:数值型与非数值型
数值型:整型int(不分长整型短整型),浮点型float(不区分单双精度),复数型complex,布尔型bool(true、false)
非数值型:列表list,元组tuple,集合set,字典dictionary,字符串str(不将字符和字符串分开)
二、输入输出语句
1、输入语句
a = input("请输入“),函数返回值是一个字符串,所以想要进行加运算时需要先使用int()转化为数值型。
当想要多输入时,有三种方法:
(1)
因为我们可以用序列对多个变量进行赋值,如字符串,列表,元组等。
(2).eval()函数
eval()能够以Python表达式的方式解析并执行字符串,并将返回结果输出。eval()函数将去掉字符串的两个引号,将其解释为一个变量。
作用:
a. 处理数字
单引号,双引号,eval()函数都将其解释为int类型;三引号则解释为str类型。
b.处理字符串类型的字符串
对于eval()括号中的的字符串(非数字),如果字符串带的是单引号或者是双引号都会引起NameError,这是因为eval()函数在处理字符串时会去掉其两个引号。正确应该使用一个单引号包含一个双引号组成的三引号来包含字符串。
(3).利用split函数
注意:python2中map函数返回的是一个列表,python3中map函数返回的是一个迭代器,类型是map
总结:可以用序列(字符串,列表,集合等)对多个变量进行赋值;input()函数返回值是字符串;eval()函数是去单引号和双引号,如前所述,对数值和字符串的不同作用;split()函数可定义用什么去分割字符串,返回值是列表,map(函数,序列),函数对序列中的每个值都分别作用,返回值是map类型。
二、模块
module就是py文件,py文件里可以包含变量,函数,类(其中类里可以含有很多函数)。
导入模块:
import 包名或import 包名 as 别名,使用时需要加前缀。
from 包名 import 成员名,使用时有时不用加前缀可直接引用函数,有时还是需要加前缀,其中包名可以是第三方的包也可以是自己写的包,成员名可以是py文件,可以是函数名,也可以是类名。
成员是类时且类中含有很有函数引用函数时需要加前缀
三、字符串
1、split()
描述:split() 通过指定分隔符对字符串进行切片,如果第二个参数 num 有指定值,则分割为 num+1 个子字符串。
语法:str.split(‘str’,num)
参数:str ——分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num – 分割次数。默认为 -1, 即分隔所有。
返回值
返回分割后的字符串列表。
2、strip()
描述:strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
语法:str.strip(‘string’)
参数:sting是需要移除的字符串列
返回值:返回的是头尾移除指定字符串的新字符串
str默认是空格、换行符\n和制表符\t,num默认为-1即分割所有,当num为1时分割成两部分。
四、文件
(一)读取文件
python有三种读取文件的方式:read(),readline(),readlines()
read():返回值是一个字符串,将文本内容全都存储与这个字符串中。
readline():返回值是一个字符串,每次只能读取文件的一行。
readlines():返回值是一个由字符串组成的列表,将文件中每行作为一个字符串元素。
注:当读文件时,读出的文件就相当于不在文件中了,故先用read(),再用readline()和readlines()读出的都是空;当先使用一次readline(),再使用read()读出的是除第一行剩下的。
f = open('test.txt')
a = f.read()
f = open('test.txt')
b = f.readline()
f = open('test.txt')
c = f.readlines()
所以常用的是readlines(),且配合for 变量 in 列表,来访问文件。
更快捷的方法:
for line in open('test.txt'):
print(line)
因为python2.5以后已经将文件视为一种可以迭代的对象了。
f = open('test.txt')
for line in f.read():
print(line)
可以学到:1、for i in j: j 不一定非要是列表,只要能迭代就行,故是文件也行。
2、当 j 是一个字符串时,将字符串视为列表每一个字符视为元素访问。
3、print语句执行完是自动换行的。
四、实例
dataMat = [] #创建一个空列表
fr = open('test.txt') #打开test文件,返回值是文件
for line in fr.readlines(): #按行遍历文件返回值是字符串
curLine = line.strip().split() #分割成两部分,返回值是由两个字符串元素组成的列表
fltLine = list(map(float, curLine) ) # 将每个元素转成float类型
dataMat.append(fltLine) #向dataMat列表中添加列表元素
print(dataMat)
输出:
五、为什么有了列表还要数组
列表数据类型可以不一样,保存的是指针,数据多时浪费内存,虽然python自带array,但只能是一维的,故引入numpy中的array函数,产生的数组可以是多维的,但数组元素的数据类型必须相同,中间用空格而不是逗号分隔,列表与数组的加减结果不一样。
六、numpy和opencv中的shape函数
numpy中的shape返回的是矩阵的行数、列数与维数,opencv中返回的是图片的高度、宽度和通道数,本质也是矩阵
七、imread读取图片
opencv:cv2.imread(‘file_path’,'参数‘)
返回的是图片的矩阵,参数-1返回原图,参数0返回灰度图,参数1返回三通道彩色图。
skimage:
from skimage import io
io.imread()
八、inception