学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。
学习日记
Python语言是一个语法简洁、跨平台和可扩展的开源通用脚本语言,具有结构简单、语法清晰的特点。Python为网站搭建、科学计算和图形用户界面等各方面提供了完善的开发框架。此外,在科学计算与数据分析方面,Python的Numpy、SciPy、Pandas、Matplotlib、Scikit-learn等框架也很成熟,这使得Python成为一款非常适用于数据科学的流行工具。
Python是一个结合了解释性、编译性、互动性和面向对象的高级程序设计语言,结构简单,语法定义清晰。Python最具特色的就是使用缩进来表示代码块,不需要使用大括号{}。缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。
Python3 中有六个标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)。其中,不可变数据类型有:Number、String、Tuple;可变数据类型有:List、Dictionary、Set。
Python3支持的数字类型有int(整数)、float(浮点数)、bool(布尔型)、complex(复数)四种类型。
Python 中的变量是不需要声明数据类型的,变量的“类型”是所指的内存中被赋值对象的类型。 同一变量可以反复赋值,而且可以是不同类型的变量,这也是Python语言称之为动态语言的原因。 并且,Python也允许同时为多个变量赋值。
brower = 'Google' #字符串类型
brower = 100 #整数类型
brower = 123.45 #浮点数类型
brower = 2 + 3j #复数类型
brower, count, addsum = 'Google', 100, 123.45
print(brower, count, addsum)
同一变量可以反复赋值,而且可以是不同类型的变量,这也是Python语言称之为动态语言的原因
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。Python语言支持算术运算符、关系运算符和逻辑运算符。下表中显示了各种操作符及其描述。
操作符
描述
+,-,*,/,%,//,**
算术运算:加、减、乘、除、取模、整除、幂
<,<=,>,>=,!=,==
关系运算符
and, or, not,
逻辑运算符
各类运算符之间的优先级顺序为:逻辑运算符 < 关系运算符 < 算术运算符。
算术运算符及用法
运算符
符号
范例
结果
-
求反
-5
-5
*
乘法
8.5*3.5
29.75
/
除法
11/3
3
%
余数
8.5%3.5
1.5
+
加法
11+3
14
-
减法
5-19
-14
**
乘方(幂)
2**5
3
字符串被定义为引号之间的字符集合,在Python中,字符串用单引号('), 双引号("), 三引号(''')括起来,且必须配对使用。当Python字符串中有一个反斜杠时表示一个转义序列的开始,称反斜杠为转义符。
Python允许用 r+“ ” 的方式表示“ ”内部的字符串默认不转义。
转义序列
说明
\n
换行
\\
反斜杠
\”
双引号
\t
制表符
字符串子串可以用分离操作符([]或者[:])选取,Python特有的 索引规则为:第一个字符的索引是0,后续字符索引依次递增,或者从右向左编号,最后一个字符的索引号为-1,前面的字符依次减1。
运算符
符号
范例
结果
“+”
连接操作
str1 = 'Python'
str2 = ', program!'
str1 + str2
'python, program!'
*
重复操作
str = 'Python'
str*2
'PythonPython'
[]
索引
str = 'Python'
str[2]
str2[-1]
't'
'n'
[:]
切片
str = 'Python'
str[2: 5]
str[-4: -1]
'tho'
'tho'
字符串的常见方法属性
方法/函数
作用
str.capitalize()
返回字符串的副本,其首字符大写,其余字符小写
str.count(sub [,start [,end ] ])
返回[ start,end ]范围内sub的非重叠出现次数,start和end可选
str.endswith(sub[,start[,end] ])
返回布尔值,表示字符串是否以指定的sub结束,同类方法str.startswith()
str.find(sub [,start [,end] ])
返回字符串中首次出现子串sub的索引位置,start和end可选,若未找到sub,返回-1,类似方法str.index()
str.split(sep =None)
使用sep作为分隔符拆分字符串,返回字符串中单词的列表,分隔空字符串
str.strip([chars])
删除字符串前端和尾部chars指定的字符集,如果省略或None,则删除空白字符
在Python中,最基本的数据结构是序列。序列中的成员有序排列,都可以通过下标偏移量访问到它的一个或几个成员。除了前面已经介绍过的字符串,最常见的序列是列表和元组。
列表是Python中最具灵活性的有序集合对象类型。和字符串不同的是,列表具有可变长度、异构以及任意嵌套列表的特点。
列表是可变对象,支持在原处修改。
列表的常用方法
1)L.append(v) :把元素v添加到列表L的结尾,相当于a[len(a)] = [v]
2)L.insert(i,v):将值v插入到列表L的索引i处
3)L.index(x):返回列表中第一个值为x的元素的索引
4)L.remove(v):从列表L中移除第一次找到的值v
5)L.pop([i]):从列表的指定位置删除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素。
6)L.reverse():倒排列表中的元素
7)L.count(x):返回x在列表中出现的次数
8)L.sort(key=None, reverse=False):对链表中的元素进行适当的排序。
元组有很多用途,例如:坐标(x, y),数据库中的员工记录等等。元组和字符串一样,不可改变,即不能给元组的一个独立的元素赋值。元组和列表看起来不同的一点是:元组用的是圆括号(),而列表用的是方括号[]。
tup = tuple('bar') #创建元组
print('输出元组tup:',tup) #输出元组
nested_tup = (4,5,6),(7,8)
print('输出元组tup:',nested_tup) #输出元素是元组的元组
print('元组的连接',tup+tuple('wwy'))
a,b,c = tup #元组的拆分
print(a,b,c)
print(tup.count(a)) # 统计某个数值在元组中出现的次数
输出元组tup: ('b', 'a', 'r')
输出元组tup: ((4, 5, 6), (7, 8))
元组的连接 ('b', 'a', 'r', 'w', 'w', 'y')
b a r
1
字典,也称映射,是一个由键/值对组成的非排序可变集合体。键值对在字典中以下面的方式标记dict = {key1 : value1, key2 : value2 } 键/值对用冒号分割,而各个元素之间用逗号分割,所有元素都包括在花括号中。值得注意的是,字典中的键必须是唯一的,只能使用不可变的对象(比如字符串)来作为字典的键,字典中的键/值对是没有顺序的。
字典的常用方法描述
方法
描述
dict.get(key, default = None)
返回指定键的值,若值不在字典中则返回default
dict.items()
以列表返回可遍历的(键,值) 元组数组
dict.keys()
以列表返回一个字典所有的键
dict.values()
以列表返回字典中的所有值
集合是一个由唯一元素组成的非排序集合体。也就是说,集合中的元素没有特定顺序,集合中没有重复项。可以使用大括号{ }或者set()函数创建集合,但是,创建一个空集合必须用 set(),因为{ }是用来创建一个空字典。
set1 = set([0,1,2,3,4])
set2 = set([1,3,5,7,9])
print(set1.issubset(set2))
print(set1.union(set2))
print(set2.difference(set1))
print(set1.issubset(set2))
False
{0, 1, 2, 3, 4, 5, 7, 9}
{9, 5, 7}
False
函数是对程序逻辑进行过程化和结构化的一种方法,函数最大的优点是增强了代码的重用性和可读性。Python不但能灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用。
lambda函数
Python使用lambda来创建匿名函数,准确地说,lambda只是一个表达式,函数体比def定义的函数简单的多,在lambda表达式中只能封装有限的逻辑。除此之外,lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
【例2-25】假如要编写函数实现计算多项式1+2*x+y2+z*y的值,可以简单的定义一个lambda函数来完成这个功能。
polynominal = lambda x,y,z: 1+2*x+y**2+z*y
polynominal(1,2,3)
13
文件操作
一般的文件处理过程为:
1. 打开文件:open()函数;
2. 读取/写入文件:read()、readline()、readlines()、write()等;
3. 对读取到的数据进行处理;
4. 关闭文件:close()。
文件读取方法描述
read([size])
读取文件所有内容,返回字符串类型,参数size 表示读取的数量,以byte为单位,可以省略
readline([size])
读取文件一行的内容,以字符串形式返回,若定义了size,则读出一行的一部分
readlines([size])
读取所有的行到列表里面[line1,line2,...lineN],(文件每一行是list的一个成员),参数size表示读取内容的总长)
CSV (Comma Separated Values),即逗号分隔值,也称为字符分隔值,因为分隔符除了逗号,还可以是制表符,是一种常用的文本格式,用以存储表格数据,包括数字或者字符。
CSV文件具有如下特点:
1. 纯文本,使用某个字符集,比如ASCII、Unicode或GB2312;
2. 以行为单位读取数据,每行一条记录;
3. 每条记录被分隔符分隔为字段;
4. 每条记录都有同样的字段序列。
read([size])
读取文件所有内容,返回字符串类型,参数size 表示读取的数量,以byte为单位,可以省略
readline([size])
读取文件一行的内容,以字符串形式返回,若定义了size,则读出一行的一部分
readlines([size])
读取所有的行到列表里面[line1,line2,...lineN],(文件每一行是list的一个成员),参数size表示读取内容的总长)
文件的写入
write() 函数用于向文件中写入指定字符串,同时需要将open函数中文件打开的参数设置为 mode = w。 其中,write() 是逐次写入,writelines() 可将一个列表中的所有数据一次性写入文件。 如果有换行需要,则要在每条数据后增加换行符,同时用“字符串 .join() ”的方法将每个变量数据联合成一个字符串,并增加间隔符 “\t”。