Python基础学习笔记
来源:互联网 发布:toolkit windows 2016 编辑:程序博客网 时间:2024/04/28 12:38
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 = 10x = 0while 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) 创建Dict
d = { '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 mathdef 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) 创建list
L = ['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) 创建list
L = ['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基础学习笔记
- python基础学习笔记
- python基础学习笔记
- python基础学习笔记
- 【Python学习笔记】基础
- Python学习笔记-基础
- Python 基础学习笔记
- Python基础学习笔记
- Python学习笔记(基础)
- Python学习笔记(基础)
- Python基础学习笔记
- Python基础学习笔记
- Python基础学习笔记
- Python学习基础笔记
- Python-基础学习笔记
- python基础学习笔记
- 青山座座皆巍峨,壮心上下勇求索——2016年终总结
- SQL查询一个表中类别字段中最大值对应的值
- github 提交项目
- AP、路由、中继、桥接、客户端模式之间的区别
- scala雾中风景(2): 小括号与花括号
- Python基础学习笔记
- C# Delegate
- CocoaPods之本地第三方库创建,管理[一]
- HTML转PDF工具(wkhtmltopdf),支持widows和linux
- zookeeper: 单机搭建伪集群
- 对这一年做一个简单总结
- 校招算法工程师常见面试题及答案总结03——KMeans
- android.support.v4.app.SuperNotCalledException
- 多态实例