一、初识python
(一).Python起源
Python创始人为吉多·范罗苏姆(荷兰),Python崇尚优美、清晰、简明的编辑风格。Python语言结构清晰简单、数据库丰富、运行成熟稳定,科学计算统计分析领先。目前广泛应用于云计算、Web开发、科学运算、人工智能、系统运维、金融领域。在金融领域中,主要用于量化分析、金融分析尤其擅长策略回测。机缘巧合通过视频课程学习Python,向金融+Python方向靠拢。
Python是一门解释性语言。区别于输出结果型,通过及时输出,提高开发效率。
(二).python的基本知识
1.python变量的命名规则
(1).python变量由字母、数字、下划线组成
(2). python变量不能用纯数字,也不能用数字开头
(3). python变量不能是python的关键字
2.python变量命名的常用规范
(1). 变量名不要太长
(2).变量名要有意义
(3)变量名区分大小写
(4).变量名不要用中文
(5).多使用驼峰体和下划线命名
3.python变量类型
(1).int类型,整数,可以进行+、-*、/、%(计算余数)、//(整除)运算
(2).str类型,字符串,',",'''。可以通过type(变量)查看数据类型,字符串可以进行+ *运算
(3).bool类型,真命题或假命题,结果True、False,只用来条件判断
(4).用户交互,使用input(),input接收到的为字符串
4.python基本数据类型
(1). int整数
#bit_length()返回一个数的二进制长度
(2)str字符串
由',",'''括起来的内容是字符串,字符串是不可改变的数据类型,不论执行任何操作,原字符串是不会改变的,每次操作都会返回字符串。
a.字符串的索引和切片
索引从0开始,使用[下标]
切片[起始位置:结束位置] #切片时顾头不顾尾,只能切到开头的位置,切不到结尾,默认从左往右切
print(s[-1:-3:-1])"-1"表示步长,每位移一单位,从右往左切片
b.字符串的修改
sn=s.capitalize() 把字符串首字母变成大写
sn=s.upper() 把字符串变成大写
sn=s.lower() 把字符串变成小写
sn=s.swapcase() 把字符串大小写互换
sn=s.title() 把字符串每个单词首字母变成大写
sn=s.center(x,"*or空白等") 把字符串左右两边用*拼接成x个单位
sn=s.strip() 默认去掉空格,空白,可以指定去掉的内容 (去掉左侧空格:s.lstrip 去掉右侧空格:s.rstrip)
sn=s.erplace("old","new") 把字符串中的内容进行替换
sn=s.split() 对字符串进行切割,切完的结果是一个列表 #与 joint相对
c.字符串的查找
sn=s.startwith() 字符串是否以xxx开头
sn=s.endwith() 字符串是否以xxx结尾
sn=s.count(a) 字符串中a出现的次数
sn=s.find(a) 查找字符串中a第一次出现的位置,没有返回-1
sn=s.inde(a) 查找字符串中a的位置,没有会报错
d.字符串的条件判断
s.isdigit() 判断是否为数字
s.isalpha() 判断是否为字母
s.isalnum() 判断是否为数字
e.字符串长度
len(s) 字符串中字符的个数 #python内置函数
(3)bool布尔值
布尔值只有两个值,True,False,空的东西是False,非空的是True
(4)list列表
a.什么是列表
列表是一个可变的数据类型,列表由[]表示,每一项元素用逗号隔开,列表什么都能装,能装对象的对象,列表可以装大量的数据
b.列表的索引和切片
列表和字符串一样,也有索引和切片,切片切出的内容是列表,索引的下标从0开始,[起始位置:结束位置:步长]
c.列表的增删改查
增加:lst.append() 在原有列表基础上进行的操作,屁股后面添加,只能加一个
lst.insert(n,xxx) 在第n个位置插入xxx
lst.extend(["",""]) 元素为列表整体添加,否则迭代添加
删除:lst.pop(n) 删除指定位置元素
lst.remove("") 删除特定元素
del lst[:] 切片删除
lst.clear() 清空
修改:lst[n]="xxx" 修改第n个元素为xxx
lst[m:n]=lst["x"] 切片部分修改为x
查询:for el in lst:
print(el)
d.列表的相关操作
计数:lst.count("") 列表中某个元素的个数
排序:lst.sort() 将列表正序排列
括号中加"reverse=True"变为降序排列
翻转:lst.reverse() 将列表中的元素翻转
嵌套:lst[][] 可进行降维操作
lst="_"join(["",""])将列表转换成字符串,每个元素之间用_连接
split字符串切割为列表
(5)tuple元组
元组tu用()表示,元组中如果只有一个元素,需要在括号中加入一个逗号,Tu=tuple()为空元组,元组是一个可迭代对象,可以使用for循环。
元组不可以进行增删改,只能看,可以查询,切片。
元组查询:tu[],tu[m:n]
元组第一层元素不能进行赋值,内部元素是没有要求的
(6)dict字典
a.字典的含义
字典dict用{}表示,字典为键值对数据,{key:value},具有唯一性特点
字典中的键都必须是可hash的,不可变的任何数据类型都可以当做字典中的键,字典中的值没有任何限制。
b.字典的增删改查
增加:dic[key]=value
dic.setdefault(key,value) 如果字典中不存在就进行添加,存在不做任何操作
删除:dic.pop("key")
del dic["key"]
修改:dic[key]=value 修改字典键对应的值
dic.update(字典)
查找:dic(key) 没有会报错
dic.get(key) 没有返回none
set.default(key)
c.字典的其他操作:
dic.keys 获取到的键存在一个高仿列表中
dic.values 获取到的值存在一个高仿列表中
dic.items 获取到的所有键值对元组形式存在一个高仿列表中
dic.fromkeys 不会对字典产生影响,fromkeys直接使用类名进行访问
列表和字典在循环的时候不能直接删除,需要把要删除的内容记录在新列表中,然后循环新列表进行删除。
(7)set集合
a.set集合定义:
set集合是Python的一个基本数据类型,一般不是很常用,set中的元素是不重复的,无序的,里面的元素必须是可hash的(int,str,tuple,bool),可以这样来记,set就是dict类型的数据,但是不保存value,只保存key,set也用{ }表示。
#set中的元素是可hash的,set本身不可hash.
集合去重
b.set集合的增删改查
增加:s.add
s.update 迭代更新
删除: s.pop # 随机弹出一个
s.remove(“xxx”) #直接删除元素 元素不存在会报错
clear() 清空集合,打印出来是set()与dict区分
修改:
Set集合中的数据没有索引,也没有办法定位一个元素,所以没有办法直接修改,可以采用先删除后添加的方式完成修改操作
c.set集合的常用操作
查询:for 循环
交集:print(s1 & s2)
并集: print(s1 | s2)
差集:print(s1 - s2)
子集:print(s1 <s2)
5.深浅拷贝
lst2 = lst1 # 赋值
没有创建新对象,共用同一对象。
lst2 = lst1[:] #浅拷贝
只拷贝第一层内容: [:],copy()
深拷贝:把对象内部的内容全部拷贝一份,引入copy模块。
import copy
lst2 = copy.deepcopy(lst1)