Python入门

Python(特点:优雅、明确、简单)

 

Python入门_第1张图片

 

一、简介:

         1989年,Python是解释型语言,不能加密,直接发布源码,Python 是现在最受欢迎的动态 (当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法) 编程语言之一(还有 Perl、Ruby 等)。近些年非常流行用 Python 建站,比如流行的 Python Web 框架 Django。对于高并发、多线程的应用程序,Python 也不是一种理想的编程语言,这是因为 Python 有一个叫 GIL(全局解释器锁)的东西,这是一种防止解释器同时执行多条Python 字节码指令的机制。这并不是说 Python 不能执行真正多线程并行代码,只不过这些代码不能在单个 Python 进程中执行而已。

 

二、与数据分析相关的 Python 库

         1、NumPy 是 Python 科学计算的基础包,它提供:

         快速高效的多维数组对象 ndarray;

         直接对数组执行数学运算及对数组执行元素级计算的函数;

         线性代数运算、随机数生成;

         将 C、C++、Fortran 代码集成到 Python 的工具等。

         它专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA 用其处理一些本来使用 C++,Fortran 或Matlab 等所做的任务。

         2、Pandas 主要提供快速便捷地处理结构化数据的大量数据结构和函数。

         3、Matplotlib 是最流行的用于绘制数据图表的 Python 库。

         4、IPython 是 Python 科学计算标准工具集的组成部分,是一个增强的 Python Shell,目的是提高编写、测试、调试 Python 代码的速度。主要用于交互式数据处理和利用matplotlib 对数据进行可视化处理。

 

         5、SciPy 是一组专门解决科学计算中各种标准问题域的包的集合。主要包括以下包:

         scipy.integrate: 数值积分例程和微分方程求解器;

         scipy.linalg: 扩展了由 numpy.linalg 提供的线性代数例程和矩阵分解功能;

         scipy.optimize: 函数优化器以及根查找算法;

         scipy.signal: 信号处理工具;

         scipy.sparse: 稀疏矩阵和稀疏线性系统求解器;

         scipy.special: SPECFUN(这是一个实现了许多常用数学函数的 Fortran 库)的包装器。

         scipy.stats: 标准连续和离散概率分布、各种统计检验方法和更好的描述统计法;

         scipy.weave: 利用内联 C++ 代码加速数组计算的工具。

 

三、python适合开发的领域

         1、web网站和各种网络服务

         2、系统工具和脚本

         3、作为”胶水“语言把其他语言开发的模块包装起来方便使用

 

四、python不适合开发的领域

         1、硬件(首选C)

         2、移动开发(IOS/Android)

         3、游戏开发(C/C++)

 

五、python和其他语言对比

                                     类型                            运行速度                   代码量

         C                         编译为机器码               非常快                      非常多

         Java                    编译为字节码                 快                               多

         Python                 解释执行                       慢                                少

 

六、python优缺点

         优点:代码量少

         缺点:运行速度慢,源码不能加密

 

七、python中的数据类型

         整数、浮点数、(如果我们要计算 11 / 4 的精确结果,按照“整数和浮点数混合运算的结果是浮点数”的法则,把两个数中的一个变成浮点数再运算就没问题了)

         字符串(如果要表示多行字符串,可以用'''...''',在多行字符串前面添加 r ,把这个多行字符串也变成一个raw字符串)、

         布尔值、空值(空值是Python里一个特殊的值,用None表示)

         list、set、tuple(元组)、dict(字典)

 

八、创建(元组)tuple和创建list唯一不同之处是用( )替代了[ ]

         1、按照索引访问list:L[1],倒序访问list:L[-1]

         2、添加新元素:L.insert(2,'Paul')

         3、从list删除元素:L.pop()

         4、list替换元素:L[2] = 'Paul'

 

         5、创建tuple(元组):t = ('Adam', 'Lisa', 'Bart')

         6、创建单元素tuple:t = ('Adam',)  因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义

         7、创建“可变”的tuple:t = ('a', 'b', ['A', 'B'])

 

九、dict(字典)和set

         1、创建dict:d = {'Adam': 95, 'Lisa': 85,'Bart': 59}

         2、访问dict:print d['Adam']

         3、更新dict:d['Paul'] = 72

         4、遍历dict:for key in d: print key + ':', d[key]

         5、dict特点:

                   第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。(不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。

      由于dict是按 key 查找,所以,在一个dict中,key不能重复)

                   第二个特点就是存储的key-value序对是没有顺序的

                   第三个特点是作为 key 的元素必须不可变(Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key)

                   dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的。

        

         6、创建set:s = set(['Adam', 'Lisa', 'Bart', 'Paul'])

         7、访问set:'Bart' in s(判断Bart是否存在set中)

         8、set特点:

                   set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。

                   set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。

                   set存储的元素也是没有顺序的。

         9、更新set:s.add(4)

         10、删除set:s.remove(4)

 

十、if语句、for循环、while循环

         1、if a == 1: print 'hello, world'

         2、for a in L: print 'hello, world'

         3、while a == 1: print 'hello, world'

         4、break:退出循环

         5、continue:继续循环

 

十一、函数

         1、在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。

         2、定义默认参数(函数的默认参数的作用是简化调用),由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面

                   def fn(a, b=1, c=2):  pass

         3、定义可变参数函数:def fn(*args):  print args  可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数

 

十二、切片

         1、切片规则:

                   L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3

                   只用一个 : ,表示从头到尾

                   L[::2] 会每两个元素取出一个来,也就是隔一个取一个。

         2、倒序切片

         3、字符串切片

 

十三、索引迭代

         1、Python中,迭代永远是取出元素本身,而非元素的索引。

         2、使用 enumerate() 函数,我们可以在for循环中同时绑定索引index和元素name。(索引迭代也不是真的按索引访问,而是由 enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身)

         3、zip()函数可以把两个 list 变成一个 list : zip([10, 20, 30], ['A', 'B', 'C'])  ==》 [(10, 'A'), (20, 'B'), (30, 'C')]

         4、迭代dict的value:for a in d.values(): print a  

                   1、dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value

                   2、itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。

         5、迭代dict的key和value:d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }  for key, value in d.items():   print key, ':', value

                   items() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value,和 values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。

 

十四、生成列表

         1、print [x * (x + 1) for x in range(1,100,2) if isinstance(x, str)]

         写列表生成式时,把要生成的元素 x * x 放到前面,后面跟 for 循环,就可以把list创建出来

        列表生成式的 for 循环后面还可以加上 if 判断

         if isinstance(x, str):加条件过滤  

转载于:https://www.cnblogs.com/qw-blogs/p/9517413.html

你可能感兴趣的:(python,shell,ruby)