Python学习笔记1:Python入门

来源:互联网 发布:centos安装nginx 编辑:程序博客网 时间:2024/05/22 15:40

1.Python简介
1989龟叔,特点优雅、明确、简单。适合的领域:Web网站和各种网络服务,系统工具和脚本,作为“胶水”语言把其他语言开发的模块包装起来方便使用。
Python和其他语言的对比如下:

语言 类型 运行速度 代码量 C 编译为机器码 非常快 非常多 Java 编译为字节码 快 多 Python 解释执行 慢 少

Python的版本2.7和3.3,部分语法不兼容,选择2.7版,因为有部分第三方库不兼容3.3版。

2.Python安装
官网下载https://www.python.org/downloads/相应版本,此处我下载Windows下2.7.11版本,下载完后直接运行安装,保持默认路径。配置环境变量,在系统变量path中加入路径“C:\Python27”,在终端输入python命令,若显示python版本则安装成功。
这里写图片描述

3.Python变量和数据类型
(1)数据类型
整数、浮点数、字符串、布尔值、空值
(2)print语句
(3)注释#
(4)变量
Python是动态语言,即变量本身类型不固定;与之相对应的是静态语言,静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错,Java就是静态语言。
理解变量在计算机内存中的表示也非常重要。当我们写:a = ‘ABC’时,Python解释器干了两件事情:1. 在内存中创建了一个’ABC’的字符串;2. 在内存中创建了一个名为a的变量,并把它指向’ABC’。
(5)定义字符串:转义字符\
(6)raw字符串与多行字符串
(7)Unicode字符串:u”’…”’
(8)整数和浮点数
整数的运算结果仍然是整数,浮点数的运算结果仍然是浮点数
2.5+10/4 #==>4.5
2.5+10.0/4 #==>5.0
(9)布尔类型
在Python中,布尔类型还可以与其他数据类型做 and、or和not运算,请看下面的代码:
a = True
print a and ‘a=T’ or ‘a=F’
计算结果不是布尔类型,而是字符串 ‘a=T’,这是为什么呢?
因为Python把0、空字符串”和None看成 False,其他数值和非空字符串都看成 True,所 以:True and ‘a=T’ 计算结果是 ‘a=T’,继续计算 ‘a=T’ or ‘a=F’ 计算结果还是 ‘a=T’。
要解释上述结果,又涉及到 and 和 or 运算的一条重要法则:短路计算。
1. 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
2. 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。

4.List和Tuple类型
(1)list
Python内置的一种数据类型是列表list,list是一种有序的集合,可以随时添加和删除其中的元素。L=[‘Adam’,’Lisa’,’Bart’]
append(element)//将指定元素加到末尾
insert(index, element)//将指定元素加到指定位置
pop//删除最后一个元素
pop(index)//删除指定位置的元素
(2)tuple
tuple是另一种有序的列表,中文翻译为“元组”。tuple和list非常类似,但是tuple一旦创建完毕就不能修改了。t=(‘Adam’,’Lisa’,’Bart’)

5.if语句
(1)if语句
if,if-else,if-elif-else
(2)for循环
(3)while循环
(4)break退出循环
(5)continue继续循环

6.Dict和Set类型
(1)dict
dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的。花括号 {} 表示这是一个dict,然后按照 key: value, 写出来即可。最后一个 key: value 的逗号可以省略。

d = {    'Adam': 95,    'Lisa': 85,    'Bart': 59}

dict的特点:
dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容。list正好相反,占用内存小,但查找速度慢。
dict的第二个特点就是存储的key-value序对是没有顺序的。当我们试图打印一个dict时,打印的顺序不一定是我们创建时的顺序,而且,不同的机器打印的顺序都可能不同,这说明dict内部是无序的,不能用dict存储有序的集合。
dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。

(2)set
set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。
set的特点:
set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快
set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的
其次,set内部存储的元素是无序的
最后,set不能包含重复的元素
访问 set中的某个元素实际上就是判断一个元素是否在set中,可以用 in 操作符判断。

7.函数
Python内置了很多有用的函数,我们可以直接调用。要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数 abs,它接收一个参数。
(1)什么是函数
(2)调用函数
(3)编写函数
(4)返回多值
(5)递归函数
(6)定义默认参数
(7)定义可变参数

8.切片
对经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。
(1)对list进行切片
(2)倒序切片
(3)对字符串切片

9.迭代(Iteration)
(1)什么是迭代?
在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。因为 Python 的 for循环不仅可以用在list或tuple上,还可以作用在其他任何可迭代对象上。因此,迭代操作就是对于一个集合,无论该集合是有序还是无序,我们用 for 循环总是可以依次取出集合的每一个元素。
注意:集合是指包含一组元素的数据结构,我们已经介绍的包括:
1. 有序集合:list,tuple,str和unicode;
2. 无序集合:set
3. 无序集合并且具有 key-value 对:dict
(2)索引迭代
索引迭代也不是真的按索引访问,而是由 enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身。
(3)迭代dict的value
dict对象本身就是可迭代对象,用 for 循环直接迭代 dict,可以每次拿到dict的一个key。如果我们希望迭代 dict 对象的value,应该怎么做?

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

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }print d.values()# [85, 95, 59]for v in d.values():    print v# 85# 95# 59

如果仔细阅读Python的文档,还可以发现,dict除了values()方法外,还有一个 itervalues() 方法,用 itervalues() 方法替代 values() 方法,迭代效果完全一样:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }print d.itervalues()# <dictionary-valueiterator object at 0x106adbb50>for v in d.itervalues():    print v# 85# 95# 59

那这两个方法有何不同之处呢?

  1. values() 方法实际上把一个 dict 转换成了包含 value 的list。
  2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。
  3. 打印 itervalues() 发现它返回一个 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。
    如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。

(4)迭代dict的key和value
items() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value:

>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }>>> print d.items()[('Lisa', 85), ('Adam', 95), ('Bart', 59)]
>>> for key, value in d.items():...     print key, ':', value... Lisa : 85Adam : 95Bart : 59

和 values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。

10.生成列表
(1)生成列表

>>> [x * x for x in range(1, 11)][1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

(2)复杂表达式

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }def generate_tr(name, score):    if score < 60:        return '<tr><td>%s</td><td style="color:red">%s</td></tr>' % (name, score)    else:        return '<tr><td>%s</td><td>%s</td></tr>' % (name, score)tds = [generate_tr(name, score) for name, score in d.iteritems()]print '<table border="1">'print '<tr><th>Name</th><th>Score</th><tr>'print '\n'.join(tds)print '</table>'

(3)条件过滤

>>> [x * x for x in range(1, 11) if x % 2 == 0][4, 16, 36, 64, 100]

(4)多层表达式

print [x*100+y*10+z for x in range(1,10) for y in range(0,10) for z in range(1,10) if x==z]
0 0
原创粉丝点击