Python基础学习笔记
2017-01-22 14:50
330 查看
Python基础学习笔记
一、环境配置
下载链接:https://www.python.org/推荐下载Python2.7版本,兼容库比较多
二、Python与Java区别
1. 静态与动态语言
Java是静态语言,即初始化变量时需要指定变量数据类型,如:int a = 12;Python是动态语言,即初始化变量时不需要指定变量数据类型,且在代码执行过程中可对变量的数据类型进行改变,如:
a = 123 # a是整数 print a a = 'imooc' # a变为字符串 print a
2. 注释
Python:#Java://或/**/
3. 表达式
Python表达式后无”;”Python表达式中代码块不用”{…}”来表示,而是用代码缩进的方式
Python中没有”++”、”–”的表达式
Python中if、while、for不同,具体见下文
4. 逻辑运算符
与:Python:and;Java:&或&&或:Python:or;Java:|或||
非:Python:not;Java:!
三、数据类型
1. 基本数据类型:整数、浮点数、布尔值、字符串、空值
布尔值:True、False,首字母大写空值:None
字符串:使用’ ‘或” “表示
示例:
print 45678 print 'Learn Python in imooc' print True print False
2. Python中”(单引号)与”“(双引号)的用法:
字符串中没有”单引号字符时,使用’ ‘表示字符串,如:s = ‘123’字符串中有”单引号字符时,使用” “表示字符串,如:s = “I’m Kevin”
字符串中既有”,也有”“时,解决办法如下:
(1) 转义符
如:
Python was started in 1989 by "Guido". --> 'Python was started in 1989 by \"Guido\".'
(2) 加前缀 r
如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀 r ,表示这是一个 raw 字符串,里面的字符就不需要转义了。如:
r'\(~_~)/ \(~_~)/'
(3) 多行字符串
如果要表示多行字符串,可以用”’…”’表示:
'''Line 1 Line 2 Line 3'''
(4) 多行字符串包含特殊字符
使用r”’…”’表示:
r'''Python is created by "Guido". It is free and easy to learn. Let's start learn Python in imooc!'''
3. Unicode字符串
Unicode字符串支持中文编码,如:(1) 中文字符:
u'中文'
(2) 支持转义符:
u'中文\n日文\n韩文'
(3) 多行:
u'''第一行 第二行'''
(4) raw+多行:
ur'''Python的Unicode字符串支持"中文", "日文", "韩文"等多种语言'''
(5) # -*- coding: utf-8 -*-:
目的是告诉Python解释器,用UTF-8编码读取源代码。然后用Notepad++ 另存为… 并选择UTF-8格式保存。
4. 布尔值
涉及到 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。
四、list
Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。1. 创建list
(1) 创建空list:empty_list = []
(2) 创建有值的list
L = ['Michael', 100, True]
由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据。
2. list根据索引查询
(1) 顺序查询a = L[0] a = L[1]
(2) 倒序查询
a = L[-1] a = L[-2]
顺序查询时,索引是从0开始;倒序查询时,索引是从-1开始的。
3. 添加新元素
(1) append添加到list末尾L.append('Paul')
(2) insert根据索引添加到list中
L.insert(0, 'Paul')
4. 删除元素
L.pop() #删除list末尾数据 L.pop(0) #根据索引删除list中数据
5. 替换元素
L[0] = 'replace'
五、tuple
tuple是另一种有序的列表,中文翻译为“元组”。tuple和list非常类似,但是,tuple一旦创建完毕,就不能修改了。tuple没有append()方法,也没有insert()和pop()方法。1. 创建tuple
t = () t = ('Adam', 'Lisa', 'Bart')
2. 创建单元素tuple
t = (1,)
因为()既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。
正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义。
3.“可变”的tuple
t = ('a', 'b', ['A', 'B'])
六、条件判断与循环
Python代码的缩进规则。具有相同缩进的代码被视为代码块。缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。1. if语句、if-else语句、if-elif-else语句
if score >= 60: print 'passed'
if score >= 60: print 'passed'
else:
print 'not passed'
if score >= 90:
print 'excellent'
elif score >= 80:
print 'good'
elif score >= 60: print 'passed'
else:
print 'failed'
2. for循环
Python的 for 循环就可以依次把list或tuple的每个元素迭代出来。L = ['Adam', 'Lisa', 'Bart'] for name in L: print name
3. while循环
while 循环不会迭代list或tuple的元素,而是根据表达式判断循环是否结束。N = 10 x = 0 while x < N: print x x = x + 1 #不可以使用x++,Python中不支持
4. break和continue
Python中break和continue关键字与Java中使用方法相同。七、dict
Dict就是通过 key 来查找 value。花括号 {} 表示这是一个dict,然后按照 key: value, 写出来即可。1. 创建dict
(1) 创建Dictd = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
(2) 获取dict的长度
print len(d)
2. 访问dict
通过key来找value。(1) 需要判断key是否存在
if 'Paul' in d: print d['Paul']
(2) 通过get(key)方法,不需要判断key的存在,如果不存在时,会返回None
print d.get('Bart')
3. dict的特点
(1) 查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。
由于dict是按 key 查找,所以,在一个dict中,key不能重复。
(2) 存储的key-value序对是没有顺序的。
(3) 作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。
4. 更新dict
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
d['Paul'] = 72
如果 key 已经存在,则赋值会用新的 value 替换掉原来的 value。
5. 遍历dict
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } for key in d: print key print d.get(key)
6. dict常用函数
dict.values():这个方法把dict转换成一个包含所有value的list。dict.itervalues():返回一个 对象,可以再通过for循环取出value;
dict.items():{ ‘Adam’: 95, ‘Lisa’: 85, ‘Bart’: 59, ‘Paul’: 74 }–>[(‘Lisa’, 85), (‘Paul’, 74), (‘Adam’, 95), (‘Bart’, 59)]
八、set
set 持有一系列元素,这一点和list很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。1. 创建set
s = set(['A', 'B', 'C'])
2. 访问set
由于set存储的是无序集合,所以我们没法通过索引来访问。访问set中的某个元素实际上就是判断一个元素是否在set中。s = set(['Adam', 'Lisa', 'Bart', 'Paul']) 'Bart' in s
3. set的特点
(1) set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。(2) set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。
(3) set存储的元素也是没有顺序的。
4. 遍历set
s = set(['Adam', 'Lisa', 'Bart']) for name in s: print name
5. 更新set
由于set存储的是一组不重复的无序元素,因此,更新set主要做两件事:一是把新的元素添加到set中,二是把已有元素从set中删除。
s = set([1, 2, 3]) s.add(4)
s = set([1, 2, 3]) s.remove(3)
调用add()方法时,如果set中已有这个元素,则不会添加且不会报错;调用remove()方法时,如果set中没有这个元素,则会报错。
九、函数
Python内置了很多有用的函数,我们可以直接调用。要调用一个函数,需要知道函数的名称和参数。可以直接从Python的官方网站查看文档:
http://docs.python.org/2/library/functions.html
1. 编写函数
在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。def my_abs(x): if x >= 0: return x else: return -x
在Python中,可以返回多值。
import math def move(x, y, step, angle): nx = x + step * math.cos(angle) ny = y - step * math.sin(angle) return nx, ny
2. 定义默认参数
函数的默认参数的作用是简化调用,你只需要把必须的参数传进去。但是在需要的时候,又可以传入额外的参数来覆盖默认参数值。由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面。def power(x, n=2): s = 1 while n > 0: n = n - 1 s = s * x return s
# OK: def fn1(a, b=1, c=2): pass # Error: def fn2(a=1, b): pass
3. 定义可变参数
如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数。def fn(*args): print args
可变参数也不是很神秘,Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。
4. 常用函数
abs(arg) : 返回arg的绝对值;range(n):返回0~(n-1)的list;
range(m,n):返回m~(n-1)的list;
range(m,n,i):返回m~(n-1)中每隔i个数取出生成的list;
sum(L):返回list或tuple中各元素的和;
cmp(x, y) 就需要两个参数,如果 x<y,返回 -1,如果 x==y,返回 0,如果 x>y,返回 1;
enumerate(L):将[‘Adam’, ‘Lisa’, ‘Bart’, ‘Paul’]变成了类似:[(0, ‘Adam’), (1, ‘Lisa’), (2, ‘Bart’), (3, ‘Paul’)];
zip(L1, L2):zip([10, 20, 30], [‘A’, ‘B’, ‘C’])–>[(10, ‘A’), (20, ‘B’), (30, ‘C’)];
join(L):可以把一个 list 拼接成一个字符串;
isinstance(x, s):判断x是否是s的实例化;
str.upper():将字符串转化为大写字母;
str.lower():将字符串转化为小写字母。
十、切片
1. list、tuple切片
(1) 创建listL = ['Adam', 'Lisa', 'Bart', 'Paul'] T = ('Adam', 'Lisa', 'Bart', 'Paul')
(2) 切出所有值
L[:] L[:3] L[0:3] T[:] T[:3] T[0:3]
(3) 切出1~2
L[1:2] T[1:2]
(4) 每隔n个取值
L[::n] T[::n]
2. list、tuple倒序切片
(1) 创建listL = ['Adam', 'Lisa', 'Bart', 'Paul'] T = ('Adam', 'Lisa', 'Bart', 'Paul')
(2) 切出所有值
L[-1:-4] T[-1:-4]
(3) 切出1~2
L[-2:-3] T[-2:-3]
(4) 每隔n个取值
L[-1:-4:n] T[-1:-4:n]
3. 字符串切片
字符串切片与list、tuple的切片操作相同,只是将list、tuple替换成字符串。十一、列表生成式
1. 生成列表
L = [] for x in range(1, 11): L.append(x * x) # 使用列表生成式 L = [x * x for x in range(1, 11)]
2. 条件过滤
L = [] for x in range(1, 11): if x % 2 == 0: L.append(x * x) # 使用列表生成式 L = [x * x for x in range(1, 11) if x % 2 == 0]
3. 多层表达式
L = [] for m in 'ABC': for n in '123': L.append(m + n) # 使用列表生成式 L = [m + n for m in 'ABC' for n in '123']
相关文章推荐
- Python基础学习笔记一
- Python基础学习笔记
- Python学习笔记 02 Python基础
- python基础学习笔记(五)
- python基础学习笔记(二)
- Python基础学习笔记二
- Python学习笔记---基础汇总部分
- Python学习笔记-Python基础
- Python基础教程学习笔记----第三章 字符串
- python基础学习笔记(四)
- Python基础学习笔记四
- python 3.0学习笔记之二------python基础小知识
- Python核心编程(第二版)学习笔记02 【第3章 Python基础】
- Python学习笔记整理(十四)类基础
- 滴水穿石--python 学习笔记--基础
- Python基础学习笔记五
- Python学习笔记 02 Python基础
- Python学习笔记一 基础知识
- python学习笔记1:基础知识
- python基础学习笔记(一)