12、python入门知识
Mac使用python教程:
1、Mac系统自带python、安装python3
2、使用sublime text编写python代码,保存为py格式,使用command+b运行代码
基础知识点:
1、python中数据类型:整数、浮点数、字符串、布尔值、空值(None)。
2、print语句:print ‘hello’ 或者 print(‘hello’)
3、注释:#
input(‘请输入内容:’)
4、变量:变量名必须是大小写英文、数字和下划线(_)的组合,且不能用数字开头。
5、raw字符串:对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀 r ,
表示这是一个 raw 字符串,里面的字符就不需要转义了。例如:'\"To be, or not to be\": that is the question.\nWhether it\'s nobler in the mind to suffer.’改成r’’’…’’’形式为:
print r'''To be, or not to be": that is the question.
Whether it's nobler in the mind to suffer.'''
6、多行字符串:用'''...'''表示多行字符串,如:
'''Line 1
Line 2
Line 3''' 或者'Line 1\nLine 2\nLine 3'
7、unicode编码:输出中文需要加上u,例如:print u'中文',如果中文字符串在Python环境下遇到 UnicodeDecodeError,
这是因为.py文件保存的格式有问题。可以在第一行添加注释:# -*- coding: utf-8 -*-,python3版本不需要u。
8、整数和浮点数运算:Python的整数运算结果仍然是整数,浮点数运算结果仍然是浮点数,1 + 2.0等于3.0。
9、list:Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据:L = ['Michael', 100, True].
循环:for name in L
10、按照索引访问list:L[0]、L[1],不能越界。
11、倒序访问list:print L[-1]、print L[-2],分别是倒一、倒二位数。
12、添加元素:append(末尾添加),insert(索引,值)。
13、删除元素:pop()(末尾删除),pop(索引,值)。
14、替换元素:直接使用索引替换赋值,例如:L[2] = 'Paul'
14、对list进行切片:L[0:3],取前3个元素。切片操作还可以指定第三个参数:L[::3]表示第三个参数表示每N个取一个。L[::2] 会每两个元素取出一个来,也就是隔一个取一个。tuple切片一样。
14、倒序切片:倒数第一个元素的索引是-1,L[-2:]取最后两个元素。
15、索引迭代enumerate(L):
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for index, name in enumerate(L):
print index, '-', name
15、tuple元组列表:tuple是另一种有序的列表,tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。创建tuple和创建list唯一不同之处是用( )替代了[ ]。例如t=(‘bob’,’jake’)
获取 tuple 元素的方式和 list 是一样的,t[0],但是不能赋值成别的元素。
16、创建单元素tuple:单元素 tuple 要多加一个逗号“,”,例如:t = (1,),才输出正确tuple:(1,)。
17、可变的tuple:t=(‘a’,’b’,[‘c’,’d’]),此时[]中的值是可变的。例如:t[2][0]=‘x’。
18、if语句:例如:
age = 20
if age >= 18:
print 'your age is', age
print 'adult'
print 'END'
输出结果:
your age is 20
adult
END
注意: Python代码的缩进规则。4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。
19、if-else语句:
if age >= 18:
print 'adult'
else:
print 'teenager'
20、if-elif-else语句:
if age >= 18:
print 'adult'
elif age >= 6:
print 'teenager'
elif age >= 3:
print 'kid'
else:
print 'baby'
21、for循环语句:
eg:L = ['Adam', 'Lisa', 'Bart']
for name in L:
print name
22、while循环语句:比如要从 0 开始打印不大于 N 的整数:
N = 10
x = 0
while x < N:
print x
x = x + 1
23、break退出循环:比如计算1至100的整数和,我们用while来实现:
sum = 0
x = 1
while True:
sum = sum + x
x = x + 1
if x > 100:
break
print sum
24、 continue继续循环:利用for循环计算平均分的代码:
L = [75, 98, 59, 81, 66, 43, 69, 85]
sum = 0.0
n = 0
for x in L:
sum = sum + x
n = n + 1
print sum / n
25、多重循环:
eg:for x in ['A', 'B', 'C']:
for y in ['1', '2', '3']:
print x + y
输出结果:
A1
A2
A3
B1
B2
B3
C1
C2
C3
26、什么是dict(相当于对象):提供len()方法,获取长度。
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
27、访问dict:使用 d[key] 的形式来查找对应的 value,print d['Adam’]
注意:使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:print d.get('Adam')
28、dict的特点:
- 查找速度快
- key不能重复
- 存储的key-value序对是没有顺序的(打印的顺序不一定是我们创建时的顺序)
29、更新dict:用赋值语句:
d = {
'Adam': 95,
'Lisa': 85
}
d['Paul'] = 72
30、遍历dict:
for key in d:
print key
31、迭代dict的value:d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 },d.values()
迭代dict的key和value:eg:
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
for key, value in d.items():
print key, ':', value
31、什么是set:set的元素没有重复,而且是无序的.
s = set(['A', 'B', 'C'])
print s
set(['A', 'C', 'B'])
32、访问set:由于set存储的是无序集合,所以我们没法通过索引来访问。
访问 set中的某个元素实际上就是判断一个元素是否在set中。
s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
'Bart' in s
True
'bart' in s
False
所以大小写很重要,'Bart' 和 'bart'被认为是两个不同的元素。
33、set的特点:
- set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。
- set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。
- 最后,set存储的元素也是没有顺序的。
34、遍历set:同dict。
35、更新set:
添加:add():s = set([1, 2, 3]) >>> s.add(4),如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了。
删除:remove():s = set([1, 2, 3, 4]) >>> s.remove(4),如果删除的元素不存在set中,remove()会报错。
36、常见内置函数:
abs(100):求绝对值
cmp(1, 2):比较函数,如果 x<y,返回 -1,如果 x==y,返回 0,如果 x>y,返回 1
int('123’):可以把其他数据类型转换为整数
str(123):可以把其他数据类型转换为字符串型。
37、编写函数:在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:
eg:def my_abs(x):
if x >= 0:
return x
else:
return -x
return None可以简写为return。
38、定义可变参数:
def fn(*args):
print args
输出:>>> fn()
()
>>> fn('a')
('a',)
>>> fn('a', 'b')
('a', 'b')
>>> fn('a', 'b', 'c')
('a', 'b', 'c')
39、生成列表:例如:如果要生成[1x1, 2x2, 3x3, ..., 10x10]
[x * x for x in range(1, 11)]
输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
40、条件过滤:列表生成式的 for 循环后面还可以加上 if 判断。例如:如果我们只想要偶数的平方
[x * x for x in range(1, 11) if x % 2 == 0]
输出结果:[4, 16, 36, 64, 100]
41、多层表达式:for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。
对于字符串 'ABC' 和 '123',可以使用两层循环,生成全排列:
>>> [m + n for m in 'ABC' for n in '123']
输出结果:[‘A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']