python批量删缩进_定量分析方法第02讲:Python基础

# -*- coding: encoding -*-

使用Jupyter

9fba61b1c474465bf892b2a5557c06fa.png

be1d197739a8a5b2932d4d7046e3cb5c.png

Python 语言

  • Python简单易学且功能强大的编程语言。

  • 它拥有高效的高级数据结构,并且能够用简单而又高效的方式进行面向对象编程。

  • Python是解释型语言,意思就是可以边写边算。

  • 在人工智能与机器学习领域应用广泛。

Python 程序代码通常比C/C++/Java程序更短小紧凑:

  • 高级数据结构使你可以在一条语句中表达复杂的操作;

  • 语句组使用缩进代替开始和结束大括号来组织;

  • 变量或参数无需显式声明。

注释块与单行注释

“””
This is a comment.
This is the second line.
“””

take python as a calculator

3+4
3*4
3/4

0. Python cheat sheet

0.1. Variables and Data Types

0.1.1. Variable Assignment
5
0.1.2. Calculations With Variables
2 
0.1.3. Types and Type Conversion
5,

0.2. Asking For Help

help(str)

0.3. Strings

'thisStringIsAwesome'
0.3.1. String Operations
2
0.3.2. String Methods
# String to uppercase

0.4. Lists

'is'
0.4.1. Selecting List Elements
# Subset
0.4.2. List Operations
my_list + my_list
my_list * 2
0.4.3. List Methods
# Get the index of an item

0.5. Libraries

0.5.1. Import libraries
import numpy
0.5.2. Selective import
from math 

1. 原子数据类型

  • 原子:一般不可再分,是其他自定义类型的基础

  • 两大内建数值数据类型:int,float。

  • 数值的标准运算符包括:+,-,,*(幂),%(取模),//(整除),以及改变运算优先级的括号。

  • C/C++是需要先声明数据的数据类型才能使用的,Python可以直接用,即类型具有动态性。

100+
  • 布尔数据类型bool,可能的状态是True,False,运算符包括and, or, not

True)
  • 数值和布尔值都可以用于关系运算(>=,==,!=)做比较。

5==
  • 数据可以有个标识作为名字,名字最好是字符、数字和下划线组成的,有含义,可读。

0
  • 给变量赋值:

20
  • 赋值可以改变数据类型

True

数据打印输出:

'width={0}, height={1}, their product is {2}'.format(width, height,width*height))

2. 容器数据类型

  • 数据容器。列表、字符串、元组是有序集合,集和字典是无序集合。

2.1. 列表(List)是一系列值,可以是异构的。

1,
List运算
  • [ ]: 索引,取列表中元素

  • +:序列连接

  • *:重复连接

  • in:询问成员是否存在

  • len:序列长度

  • [:]:取出序列的一部分

0])
List函数
  • 增、删、排序、查找

9)
切片
1, 
3:]
squares[:]
连接
36, 
修改元素
1, 
3] = 
216)
字符列表
'a', 
2:
letters[:] = []
letters
嵌套列表(创建一个包含其它列表的列表)
'a', 
1]
range: 生成数值范围对象
10))
增删改、索引、反转、排序
66.25, 
把列表当作堆栈(后进先出)使用
3, 
列表推导式:从序列中创建列表
squares = []
for x in range(10):
squares.append(x**2)
squares
2 
4, -
删除列表元素:del 语句
1, 

2.2. 字符串

  • 字符串(string)是字符的只读有序集合

"Shanghai is a city"
字符串函数:计数、填充、小写、大写、查找、分割
'a'))
字符串连接
'a ' 
'p' ,  
字符数组
'Python'
内置函数 len() 返回字符串长度
len(word)
字符串(数组)切分
4]

2.3. 元组

  • 元组(tuple)是只读列表。

1,
  • 最外层元组的括号不是必须的

12345, 

2.4. 集合

  • 集(set)是无序只读数据集合。

用set函数或大括号创建集合
  • 大括号或 set() 函数可以用来创建集合。注意:想要创建空集合,你必须使用 set() 而不是 {}。后者用于创建空字典,我们在下一节中介绍的一种数据结构。

'apple', 
Set支持的运算
  • in:询问集中是否有某元素

  • len:元素数量

  • a | b:合集

  • a & b:交集

  • a - b:a中去除b中元素

  • a <= b:询问a中元素是否都在b中

'orange' 
1,
Set支持的方法
  • union

  • intersection

  • difference

  • issubset

  • add

  • remove

  • pop

  • clear

print(a.union(b))
print(a.intersection(b))
print(a.issubset(b))
a.add(9)
print(a)
a.remove(9)
print(a)
a.pop()
print(a)
a.clear()
print(a)

2.5. 字典

  • 字典是键值(key:value)对的无序集合。

  • 键必须是互不相同的(在同一个字典之内)。

  • 一对大括号创建一个空的字典:{} 。

  • 字典的主要操作是依据键来存储和析取值。也可以用 del 来删除键值对(key:value)。

用大括号或dict函数创建字典
"name": 
字典支持的运算
  • d[key]

  • key in d

  • del d[key]

'jack': 
字典提供的方法
  • d.keys()

  • d.values()

  • d.get(key)

  • d.get(key, alt)

print(d.keys())
print(d.values())
print(d.get("age1",0))
print(d.get("gender","M"))
keys与in
  • 对一个字典执行 list(d.keys()) 将返回一个字典中所有关键字组成的无序列表(如果你想要排序,只需使用 sorted(d.keys()) )。

  • 使用 in 关键字(指Python语法)可以检查字典中是否存在某个关键字(指字典)

print(list(tel.keys()))
sorted(tel.keys())
print('guido' in tel)
print('jack' not in tel)
字典生成式
2 
for x 

3. 控制结构

3.1. 分支

"Please enter an integer: "))
pass 语句: 什么也不做

用于那些语法上必须要有什么语句,但程序什么也不做的场合

class 

3.2. 迭代

for 语句
'cat', 
while语句
1

生成 菲波那契 子序列的程序,如下所示:

0, 
range() 函数生成一个等差级数list
5))
5)))
for i 
for i 
for i 
for i 
break 和 continue 语句, 以及循环中的 else 子句

循环的 else 子句在未出现 break 时运行。

for n 
for num 
列表解析式: 通过迭代和分支结构创建List
slist = []
for i in range(10):
slist.append(i**2)
print(slist)

slist = [i**2 for i in range(10)]
print(slist)

slist = [i**2 for i in range(10) if i%2==0]
print(slist)
enumerate

在序列中循环时,索引位置和对应值可以使用 enumerate() 函数同时得到

'Mary', 
'Mary', 
对两个或更多的序列用 zip() 整体打包迭代
'name', 
将两个列表转换为一个字典

假设有两个列表,一个列表内容为学生姓名,另一个内容为学生分数。使用zip函数,将这两个列表转换为一个字典

"Peter", 
字典中按键值对循环:使用 items()
'gallahad': 
逆向迭代

需要逆向循环序列的话,先正向定位序列,然后调用 reversed() 函数:

for i 
排序后迭代

要按排序后的顺序循环序列的话,使用 sorted() 函数,它不改动原序列,而是生成一个新的已排序的序列:

'apple', 
循环内修改

若要在循环内部修改正在遍历的序列(例如复制某些元素),建议您首先制作副本。在序列上循环不会隐式地创建副本。切片表示法使这尤其方便:

'cat', 

4. 函数

  • 函数是程序设计模块,是实现软件复用的基础。

例子:阶乘
def mul(n):
例子:斐波那契数列
def fib(n):
f = fib
f(1000)
函数默认参数值
def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
'Do you really want to quit?')
关键字参数
def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
可变参数列表
def concat(*args, sep="/"):
"earth", 
参数列表的分拆

“*” 操作符来自动把参数列表拆开

“**” 操作符分拆关键字参数为字典

3, 
def parrot(voltage, state='a stiff', action='voom'):
匿名函数lambda
def f(x):
1, 
map()根据提供的函数对指定序列做映射
lambda x: x**
文档字符串
def my_function():

5. 异常处理

  • Python 中(至少)有两种错误:语法错误和异常( syntax errors 和 exceptions )。

  • 异常处理是容错的方法。通过try,except,raise等配合处理。

import math
while 

6. 类

类是一种自定义的数据结构。

class 

7. 输入输出

input()函数输入: 通过提示再键盘输入,再转换类型
"Your age:")
格式化屏幕打印
for x 
'We are the {} who say "{}!"'.format(
文件读写

函数 open() 返回 文件对象,通常的用法需要两个参数:open(filename, mode)。

f = open(‘workfile’, ‘w’)

f.read()

f.readline()

for line in f:

print(line, end='')

f.write(string)

f.close()

典型文件:txt,csv,xlsx/xls, 网页
典型输入输出:数据库

8. 内置函数

8.1. 数据类型

  • bool: (True,False)

  • int: 整数

  • float: 浮点数

  • complex: 复数

8.2. 进制转换

  • bin() 转换成二进制

  • otc() 转换成八进制

  • hex() 转换成十六进制

8.3. 数学运算

  • abs() 绝对值

  • divmode() 商和余数

  • round() 四舍五入

  • pow(a, b) 求a的b次幂

  • sum() 求和

  • min() 求最小值

  • max() 求最大值

8.4. 序列与集合

  • list() 将一个可迭代对象转换成列表

  • tuple() 将一个可迭代对象转换成元组

  • reversed() 将一个序列翻转, 返回翻转序列的迭代器

  • slice() 列表的切片

  • str() 将数据转化成字符串

  • bytes() 把字符串转化成bytes类型

  • ord() 输入字符找带字符编码的位置

  • chr() 输入位置数字找出对应的字符

  • ascii() 是ascii码中的返回该值

  • repr() 返回一个对象的string形式

  • dict 创建一个字典

  • set 创建一个集合

  • frozenset() 创建一个冻结的集合,不能进行添加和删除操作。

  • len() 返回一个对象中的元素的个数

  • sorted() 对可迭代对象进行排序操作 (lamda)

  • enumerate() 获取集合的枚举对象

  • all() 可迭代对象中全部是True, 结果才是True

  • any() 可迭代对象中有一个是True, 结果就是True

  • zip() 打包序列成一个元组列表

  • fiter() 过滤 (lamda)

  • map() 根据提供的函数对指定序列列做映射

8.5. 作用域相关

  • locals() 返回当前作用域中的名字

  • globals() 返回全局作用域中的名字

8.6. 和迭代器/生成器相关

  • range()

  • next(): 向下执行一次, 内部实际使? next()

  • iter(): 获取迭代器, 内部实际使用 iter()

8.7. 字符串类型代码的执行

  • eval() 执行字符串代码,并返回结果

  • exec() 执行字符串代码

  • compile() 将字符串代码编码,代码对象能够通过exec语句来执行或者eval()进行求值

'8+10'

8.8. 输入输出

  • print() : 打印输出

  • input() : 获取用户输出的内容

  • hash() : 获取到对象的哈希值(int, str, bool, tuple)

  • open() : 用于打开一个文件, 创建一个文件句柄

'123'

8.9. 模块相关

import() : 用于动态加载类和函数
import os
帮助,help(),查看函数或模块用途的详细说明
print)
调用相关: callable(), 一个对象是否是可调用的,返回True/False
'a'
查看内置属性, dir() , 访问的是对象中的dir()方法
print(dir(str))

小结

  • 基本数据类型:int, str, float, complex

  • 容器数据类型:list, dict, tuple

  • 分支与迭代结构:if, for, while

  • 定义函数与类:def, class

  • 常用函数:print,open/close



相关

定量分析方法第01讲:课程概况

主题

优化问题、模型与算法

旅行商问题(Traveling Salesman Problem)求解算法

[公开课] 物流系统优化与决策: 旅行商问题

[公开课] 物流系统优化与决策: 旅行商问题

[公开课] 物流系统优化与决策: 无容量约束仓库选址

[公开课] 物流系统优化与决策: 容量约束仓库选址

[公开课] 物流系统优化与决策: 无容量约束p-median选址

[公开课] 物流系统优化与决策: 容量约束p-median选址

[公开课] 物流系统优化与决策: 多源Weber选址

[公开课] 物流系统优化与决策: p-hub选址

机器学习

机器学习: 鸢尾花数据集

机器学习: Scikit-learn Getting Started

机器学习: An introduction to machine learning with scikit-learn

机器学习: 手写数字识别

机器学习: 人脸补全

Python普通最小二乘法

[公开课]机器学习(01-04): 四个例子

[公开课]机器学习(05-06): 分类结果的评价

[公开课]机器学习(07): 从Scikit-learn看机器学习

[公开课]机器学习(08): 机器学习概念解读

[公开课]机器学习(09):统计学习及监督学习概论

[公开课]机器学习(10): 感知机

[公开课]机器学习(11):k近邻法

[公开课]机器学习(12):朴素贝叶斯法

[公开课]机器学习(13):朴素贝叶斯法重述、第10-12讲的Python算法

[公开课]机器学习(14):梯度下降法

[公开课]机器学习(15):拉格朗日对偶

[公开课]机器学习(16):决策树

[公开课]机器学习(17): 逻辑斯特回归

[公开课]机器学习(18): 最大熵模型

[公开课]机器学习(19): 线性可分支持向量机

[公开课]机器学习(20): 线性支持向量机

[公开课]机器学习(21): 非线性支持向量机

[公开课]机器学习(22): 支持向量机实验

[公开课]机器学习(23): 提升方法Adaboost

[公开课]机器学习(24): 隐马尔科夫模型

[公开课]机器学习(25): 聚类方法

[公开课]机器学习(26): 主成分分析

[公开课]机器学习(27): 神经网络

[公开课]机器学习(28): 集成学习

机器学习28讲视频合集

[公开课]机器学习28讲视频合集01-10

[公开课]机器学习28讲视频合集11-20

[公开课]机器学习28讲视频合集21-28

ALNS自适应大规模邻域搜索

ALNS自适应大规模邻域搜索: 套裁问题

ALNS自适应大规模邻域搜索: 旅行商问题

SCIP数学规划

SCIP数学规划求解器: PySCIPOpt

SCIP: 奇数还是偶数

SCIP: 逻辑约束

SCIP: 四个ATSP模型

SCIP: 1D装箱问题的算法与模型

SCIP: 多商品经济批量订货模型(MEOQ)线性化

SCIP: 选址问题(k-median)

SCIP: 容量约束下多分配选址问题

SCIP: 图着色问题(限定色数)

SCIP: 批量(lot-sizing)优化问题与割平面

SCIP: 最大稳定集问题

SCIP: permutation flow shop

SCIP: 多商品经济批量订货模型(MEOQ)线性化

SCIP: 资源约束调度问题RCSP

SCIP: 鲁棒生产模型(SOCP)

SCIP 05: 整数规划例子

SCIP: 图着色的三个模型

SCIP: Weber问题的二阶锥模型

SCIP: 设施选址问题的分解模型

SCIP: 数独(sudoku)整数规划模型

SCIP: 割平面求解TSP的算法

Python进化计算

Python进化计算Geatpy要点

单目标单连续变量函数二进制编码进化算法

单目标多连续变量带约束实数编码进化算法

带约束的单目标旅行商问题进化算法

句子匹配单目标进化算法

混合编码单目标进化算法

离散变量双目标进化算法

连续变量双目标进化算法

多目标背包进化算法

混合编码多目标背包进化算法

Python优化

Python无约束非线性优化

Python差分进化算法

Python线性规划

Python 数学规划

Python数学规划案例:单分配多枢纽站选址

Python数学规划案例:单源设施选址

Python数学规划案例:路径优化CVRP

Python数学规划案例:一维装箱

Python数学规划案例四:资源约束的最短路径

Python数学规划案例三:最短路径

Python数学规划案例二

Python数学规划之Cplex之旅

Python数学规划案例一

Python数学规划案例一模型

Python: 数学规划

数学规划算法十二讲

单纯型算法第1-4讲

单纯型算法第1-4讲视频

单纯型算法第5-8讲

单纯型算法第9-10讲

单纯型算法第11-12讲

Python数据结构

Python数据结构

Python图

Python二叉树

Python排序

Python查找算法

Python递归

Python链表

Python栈

Python图(csgraph)

Python数据

Python: 数据库之SQLite

Python: Pandas

Python数据库

Numpy快速入门

Pandas入门

Python Web

几分钟做个Web应用

Python信息系统实验:仓库管理

Python基础

Python基础:没有更简单

Python利器

Python快速入门

Python 入门

程序设计

如何学习程序设计

Python技术

cdda99dc63c4b6f7b7b3a493f3b694b6.png

复杂性

3e376aabcec0572e06763f62971f1ab7.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值