Fork me on GitHub

Python-基础篇

本文是学习南京大学Python玩转数据基础篇的笔记整理。
内容较为简洁,仅供参考。

python类型

基本类型

  1. 整型/长整型: 长度与机器有关。长整型:整型值后面加上L。
  2. 布尔型:True、False。
  3. 浮点型:数学中的实数。可以用科学计数法表示。 float
  4. 复数型:虚数部分用j。
x = 2.4+ 5j
Out[9]: (2.4+5j)
type(x)
Out[10]: complex

复数可以对实数和复数部分分离。imag、real。

复数的共轭:conjugate()

x.real
Out[11]: 2.4
x.imag
Out[12]: 5.0
x.conjugate()
Out[13]: (2.4-5j)

序列类型

字符串,列表[],元组()

字符串:
三种表示方式:单引号,双引号,三引号。
可以使用索引操作符。

映设类型

字典:
大括号{}鉴别;
类似于哈希表的键值对。

python运算

算术运算

+ - × /
取余 %
乘方 **
整除 //  ----地板除

比较运算

数值的比较:按值的大小
字符串的比较:按ASCII码值的大小

逻辑运算

not and or

字符运算

r / R,  ---原始字符串
u / U

位运算

<左移 >右移

函数、模块与包

函数

函数可以看成类似于数学中的函数。完成一个特定功能的一段代码。如绝对值函数abs(),类型函数type(),四舍五入函数round()

内建函数

如何查看python中自带的内建函数

1
dir(__builtins__)

模块

非内建函数如何使用呢?

如floor()函数,不是内建函数,但包含在math的头文件中,因此只需要导入该模块即可,如下:

1
import math

什么是模块?
模块就是一个完整的python文件。

1
2
文件:物理上的组织方式:math.py
模块:逻辑上的组织方式:math

Python中通常用import 模块的方式将现成模块中的函数、类重用到其他代码块中。

用help(math)打印所有math内部的函数和变量。

可以导入多个模快。可以从模块中导入指定的模块属性(把指定的名称导入)。

1
2
3
import ModuleName
import ModuleName1,ModuleName2,...
from Module1 import ModuleElement

包(package)

包是有层次的文件目录结构。

比如说如下的目录结构定义了一个由模块和子包组成的Python应用程序执行环境:

1
2
3
4
5
6
7
8
9
10
11
12
AAA/
__init__.py
bbb.py
CCC/
__init__.py
c1.py
c2.py
DDD/
__init__.py
d1.py
EEE/
...

因此,我们可以这样使用该包:

1
2
import AAA.CCC.c1
AAA.CCC.c1.func1(123)

或者:

1
2
from AAA.CCC.c1 import func1
func1(123)

库(library)

库是一组具有相关功能的模块的集合。
Python的一大特色就是具有强大的标准库、以及第三方库、以及自定义的模块。

条件、循环与中断语句

条件语句

if语句
else语句
elif语句:多分支情况下使用

其中,条件语句可以嵌套使用。

循环语句

for循环

1
2
for iter_var in interable_object:
suite_to_repeat

可以明确循环的次数,一般用在:

  • 遍历一个数据集的成员
  • 在列表解析中使用

    1
    2
    3
    4
    in[4]: [i for i in range(10)]
    Out[4]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    in[5]: [i for i in range(10)if i%2==0]
    Out[5]: [0, 2, 4, 6, 8]
  • 在生成器表达式中使用

    1
    2
    in[6]: (i for i in range(10)if i%2==0)
    Out[6]: <generator object <genexpr> at 0x7f44af56f570>

可用于迭代的对象(iterable object)有:String、 List、Tuple、Dictionary、File。

range语句

一般与for语句配合使用。

while循环

语法:

1
2
while expression:
suitr_to_repeat

其中,expression是条件表达式,当expression的值为 True的时候,执行suitr_to_repeat的代码块。

break语句

while循环中的break与for循环中的break。

循环中的else语句

循环中的else:
如果是正常结束,就执行else中的代码;break处中止,就不执行else。

自定义函数

自定义函数的创建:

1
2
3
def function_name([arguments]):
"optional documentation string"
function_suite

其中,def下一行可以是函数文档。~~~~~要学会使用函数文档!!

自定义函数的调用

函数名加上函数运算符,一对小括号。

括号之间是所有可选的参数,即使没有参数,小括号也不能省略。

参数问题,有参数就必须加上去。除非有默认值的可以不需要。

默认参数

函数的参数可以有一个默认值,如果提供有默认值,在函数定义中,默认参数以赋值语句的形式提供。

默认参数的值可以改变。

默认参数一般需要放置在参数列表的最后。默认参数后面不能有非默认参数。

关键字参数

关键字参数是让调用者通过使用参数名区分参数。允许你改变参数列表中的参数顺序。

传递函数

函数可以像参数一样传递给另外一个参数。

1
2
3
4
5
6
7
def addMe2Me(x):
return (x+x)
def self(f,y):
print f(y)
>>> self(addMe2Me,2.2)
4.4

lambda函数

匿名函数。

1
2
3
4
5
6
7
8
# 普通的函数
def my_add(x,y): return x+y
# 匿名函数
lambda x, y : x + y
my_add = lambda x, y : x + y
>>> my_add(3,5)
8

变量的作用域

全局变量和局部变量

函数内部就是局部变量。

函数内部可以调用全局变量,使用global语句。

当全局变量和局部变量使用的是同一个名字时,内层会屏蔽外层。

递归

递归介绍

递归必须有边界条件,即停止递归的条件。 如n==0 或者n==1的情况。

递归的代码更简洁,更符合自然逻辑,更容易理解。

递归的执行方式:逐层递归调用,遇到边界条件停止递归,逐层返回调用至最初层,系统资源的消耗比循环大。

汉诺塔

1
2
3
4
5
6
7
8
9
10
11
12
# Filename: Hanoi.py
def hanoi(a, b, c, n):
if n == 1:
print(a, '->', c)
else:
hanoi(a, c, b, n - 1)
print(a, '->', c)
hanoi(b, a, c, n - 1)
hanoi("a", "b", "c", 3)

运行结果:

1
2
3
4
5
6
7
a -> c
a -> b
c -> b
a -> c
b -> a
b -> c
a -> c

------ 本文结束感谢您的阅读 ------
坚持原创技术分享,您的支持将鼓励我继续创作!