参考资料:
1.http://cs231n.github.io/python-numpy-tutorial/
2.https://docs.python.org/3.5/library/stdtypes.html#sequence-types-list-tuple-range
3.https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
使用的python版本号:python 3.4.3
Python
首先通过快速排序,感受python语句的简洁性:

关于快速排序可查看我之前的博文:http://blog.****.net/u014485485/article/details/78264015
基本数据类型:integers, floats, booleans, and strings


注意:没有x++,x--
逻辑操作符,用英文表示:

字符串操作:

Lists:
Lists are mutable sequences, typically used to store collections of homogeneous items

slicing

loop

用enumerate得到索引:

批量操作数据:

或者简化写为

也可以对数据进行条件筛选:

Dictionaries
储存形如(key,value)的数据

in 用于判断:

Dictionaries的迭代:

Sets
A set object is an unordered collection of distinct hashable objects.
set的迭代:

Tuples
Tuples are immutable sequences, typically used to store collections of heterogeneous data .
没有add,remove方法
Functions
def 函数名(参数):
Classes

Numpy
提供对多维数组的操作和运算。

创建数组:

index操作:



Array math

Broadcasting
如果你想把两个结构不一样的数组相加,可以扩展:

当数组较大时不使用循环:

而numpy可以做到不产生中间数据vv:

再比如:

SciPy(pronounced “Sigh Pie”)
SciPy builds on this, and provides a large number of functions that operate on numpy arrays。
可以对图像进行操作。
Image operations


Distance between points

距离参数含义在此查找:https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.pdist.html
常用的:

Matplotlib
Plotting


Subplots

Images

python3的一些特性
1.print()会依次打印每个字符串,遇到逗号“,”会输出一个空格
2.如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容
3.
Python的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的,例如Java对32位整数的范围限制在-2147483648-2147483647。
Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大)。
4.在最新的Python 3版本中,字符串是以Unicode编码的。
当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。
当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
实际上Python是用这个正则表达式提取编码,coding[:=]\s*([-\w.]+)
所以以下都可以 :
# coding:utf-8
# coding=utf-8
5.
list用方括号[ ],tuple用圆括号( ),dict用大括号{ }。tuple和list非常类似,但是tuple一旦初始化就不能修改。
如果要定义一个空的tuple,可以写成():
>>> t = ()
>>> t
dict里key是唯一的,不可变的(字符串,整数),添加一个相同的key之前的会被覆盖,查看key是否存在的方法:1....in... 2.get()
删除:pop() 。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()
s=set([1,2,3]) set要借助list来创建 添加add();删除remove()
6.列表生成式List Comprehensions L = [x * x for x in range(10)]
生成器generator:g = (x * x for x in range(10)) 将方括号改成圆括号。
如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。我们基本上从来不会用next()来获取下一个返回值,而是直接使用for循环来迭代
def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
return 'done'
7.可以直接作用于for循环的对象统称为可迭代对象:Iterable 判断用 isinstance(...,Iterable)
一类是集合数据类型,如list、tuple、dict、set、str等;
一类是generator,包括生成器和带yield的generator function。
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator 判断用 isinstance(...,Iterator)
生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。
把list、dict、str等Iterable变成Iterator可以使用iter()函数
这是因为Python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误。
8.
module:任何模块代码的第一个字符串都被视为模块的文档注释;
if __name__=='__main__':
test()
当我们在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,而如果在其他地方导入该hello模块时,if判断将失败,因此,这种if测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。
注:在命令行运行时会运行if下的语句,在交互环境里import时则并不会执行if下面的语句
9.
类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用。以两个下划线开头的实例变量名,比如__name,这样的实例变量外部是不可以访问的(也不是绝对的)。有些时候,你会看到以一个下划线开头的实例变量名,比如_name,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。