——Python的设计哲学是“优雅”、“明确”、“简单”
推荐的IDE:pycharm python版本2.7
1.数据类型:
(1)整数、浮点数与C++一样,其运算也是一样。
(2)字符串:“”或’’括起来的文本,对特殊字符,可以用 \ 进行转义。可以用 r'...' 和r'''...'''转义多个特殊字符,后者对段落有效。以Unicode表示的字符串用 u'...' 表示,不加u中文不能正常显示。同样有u'''...''',甚至组合为ur'''...'''。
可以在第一行添加注释
# -*- coding: utf-8 -*-
目的是告诉Python解释器,用UTF-8编码读取源代码。
(3)布尔值:用True和False表示(注意大小写),可以用and、or和not运算。
Python把0、空字符串''和None看成 False,其他数值和非空字符串都看成 True。
(4)空值:None
(5)List:一种有序的集合,可以随时添加和删除其中的元素。构造很简单,直接用 [ ] 就可以了,里面的元素也不要求类型相同,超级自由的,像这样:
my_list = ['you', True, 233]
或是这样
empty_list = []
我们可以直接用print就把整个list打印出来,超级方便!
而且还可以用下标访问,跟数组一样:L[1],倒序访问也可以!!!L[-1]我的天呐!
插入:有两种方法:L.append(元素)追加元素到末尾,L.insert(0,元素)插入元素到0位置,其他元素顺势往后移。
删除:L.pop(),删掉最后一个,L.pop(2)删掉位置2的元素。
替换:L[0]=元素,直接替换0位置的元素。
(6)tuple(元组):一旦创建就不能修改。创建方式是这样的:
t = ('元素1', '元素2', '元素3') 或是 t=(元素,)——单元素tuple需要避免歧义。
tuple里面嵌套list也是可以的:
t = ('a', 'b', ['A', 'B'])
(7)dict:表示映射关系的字典,用 {} 表示,花括号里是key:value这样的对应关系。
len(d)可以用来求字典的大小。要注意key是不可变得类型,如字符串、整数、浮点数。
访问dict里面的元素:d[key],但要知道这个key值是否存在,避免发生错误。判断方法如下:
1. if ‘key’ in d:
2. d.get(‘key’),存在返回value,不存在返回None
d[key]=value语句可以用于添加新的映射,也可以用于修改原来的映射。
(8)set:set里面的元素不会有重复,而且是无序的。创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素。
s = set(['元素1', '元素2', '元素3'])
用in操作符判断一个元素是否在set中。
s.add(元素)和s.remove(元素)可以用于在set中添加和删除元素。删除时需注意判断元素是否在set中,否则会报错。
2.变量:
变量的命名规则:大小写英文、数字和下划线(_)的组合,且不能用数字开头。
python是动态语言,变量本身的类型是不固定的!
3.输出:
print语句,可以连多个字符串,用“,”隔开,在输出中会显示为空格。
4.注释:
以 # 开头,至行尾都是注释
5.条件判断与循环:
Python代码的缩进规则:具有相同缩进的代码被视为代码块。缩进据说用4个空格比较好。
(1)if语句:
if+表达式+:
(2)if-else语句:
if+表达式+:
else:
(3)if-elif-else语句:
if+表达式+:
elif+表达式+:
else:
(4)for循环:
可以用来遍历list、tuple、dict和set里的元素:
L = ['Adam', 'Lisa', 'Bart']
for name in L:
print name
(5)while循环:
While+表达式+:
(6)break跳出循环:
再循环中可以使用break跳出循环。
(7)continue跳出本次循环,继续以后的循环:
6.函数
调用:方法和C++一样,像:abs(-1)、cmp(x,y)、int(‘123’)、str(123)。(后两个为类型转换),zip()函数可以把两个list变成一个list:
>>> zip([10, 20, 30], ['A', 'B', 'C'])
[(10, 'A'), (20, 'B'), (30, 'C')]
编写:用def语句,后接函数名、括号、参数和冒号,再编写函数体,里面可以包含return语句,当然也可以没有,这时会返回None。
注意python的函数是可以返回多个值的,实际上这里返回的是一个tuple。像下面这段代码:
import math
def move(x, y, step, angle):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
递归函数、默认参数和C++的差不多。
可变参数:参数名前面加一个*,就可以传入0个、1个或多个参数。其实这里也是一个tuple。看下面求平均值的一段代码:
def average(*args):
ave=0.0
ji=0.0
for i in args:
ji=ji+1
ave+=i
if ji!=0:
ave=ave/ji
return ave
print average()
print average(1, 2)
print average(1, 2, 2, 3, 4)
关键字参数:允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
def person(name, age, **kw):
print 'name:', name, 'age:', age, 'other:', kw
>>> person(Mike, 20)
name: Mike age: 20 other: {}
>>> person('Sam', 15, city=’Guangdong’)
name: Sam age: 15 other: {'city': ’Guangdong’}
>>> person(‘Allen’, 45, gender='M', job='Player')
name: Allen age: 45 other: {'gender': 'M', 'job': ‘Player’}
7.切片(Slice)
,可以对list和tuple甚至字符串进行切片,看下面几个例子就明白了:
L[0:3]:表示从0开始的3个元素
L[:3]:表示从0开始的3个元素
L[:]:表示从头到尾
L[::2]:第三个参数表示每两个元素取一个
倒序也是可以的!L[-2:]:表示从倒数第二个到末尾的元素
8.特殊的遍历
(1)enumerate() 函数,可以在循环中同时绑定元素下标和元素,实际上是把元素下标和元素组成tuple中的映射。
看下面代码:
>>> L = ['A', 'B', 'C', 'D']
>>> for index, name in enumerate(L):
... print index, '-', name
...
0 - A
1 - B
2 - C
3 - D
(2)dict的遍历:
1.直接遍历时遍历的是dict的key,像下面的代码:
for key in d:
print key+':',d[key]
2.若想要遍历value,方法有两种:
一种是用values()方法:
for v in d.values():
print v
另一种是用 itervalues() 方法(更省内存):
for v in d.itervalues():
print v
3.同时遍历,我们有时需要同时遍历dict的key和value,我们有items()方法和iteritems()方法,后者不占用额外的内存。看下面的代码:
>>> for key, value in d.items():
print key, ':', value
9.生成列表
列表生成式可以用简洁的代码生成list。代码例子像下面这样:
>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
当然多层嵌套也是可以的:
>>> [m + n for m in 'ABC' for n in '123']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
10.生成器
当然有些时候我们只需要按一定规则生成的元素,而不需要把所有元素列出一个list。这个时候我们就可以用生成器(generator)。
我们用 () 创建,像这样: g = (x * x for x in range(10)),我们可以一直用next()方法调用生成的元素,当然用一个for循环会显得理智得多。
当函数返回结果用yield语句时,它其实也是一个生成器。
写文章的时候刚刚接到消息,小李子拿奥斯卡了,嗷嗷~,小李子你不是一个人在拿奖