Python入门笔记
1、List ------ 列表,python内置的一种数据类型,有序集合
(1)创建
L = [] or L = ['bob','tom',100,true]
(2)访问
L[0] L[1] print (L[0]) ----- 正序 L[-1] L[-2] ------ 倒序
(3)添加
L.append('paul') ---- 添加到最后 L.insert(0,'paul') ----- 插入到索引号为0的地方
(4)删除
L.pop() ----- 删除最后一个元素,并返回 L.pop(2) ----- 删除索引号为2的元素,并返回 print (L)
(5)替换
L[2] = 'paul'
2、tuple -------- 元组,与list类似,一种有序集合,区别:一旦建好,就不能修改
(1)创建
t = ('bob','tom','lili') ------ () 替换[],没有append()\pop()\insert()方法 ------ 访问与list一样,但不能替换
t = () ---- 空元组 t = (1,) ------ 单元组,加逗号,避免与整数1发生歧义
(2)可变元组
t = ('a','b',['A','B']) ----- L = t[2] L[0] = 'x' print (t)
3、dict ---- 也是集合
(1)概念
(2)访问
d[key] ----- 访问value L[索引] ---- 访问元素
key不存在,会报错:KeyError ------ 解决方法:
(3)特点
(4)更新
在已有dict中加入新的key-value元素,即 d[key] = value
如果key已经存在,则赋值会更新之前的value值 ----- print(d)
(5)遍历
for key in d:------ for name in L: -- 其中的变量name在for语句中定义
print(key)------- print(name)
4、set
(1)创建 ------ 调用set()并传入一个list ------ set会自动去掉重复的元素
s = set(['A','B','C']) print(s)
(2)访问 ----- set是无序的,不能用索引访问
‘Bart’ in s ------ 访问即判断一个元素是否在set中,用in操作符判断
(3)特点
(4)遍历 ---- 与list类似
for name in s:
print(name)
(5)更新 ---- 用add()可以直接添加,而remove()前需判断
s.add() ---- 添加元素,如果已存在,不报错也不会加进去 s.add(4)
s.remove() ----- 删除元素 ,如果不存在,则报错 s.remove(4)
5、基础语句
(1)if语句 ---- 注意事项
(2)for循环
(3)while循环
(4)break语句 ----- 直接退出循环
(5)continue语句 ----- 跳过后续循环,直接进行下一次循环
6、函数
(1)常用内置函数 ----- https://docs.python.org/3.5/library/intro.html
a、绝对值函数 abs(x)
b、比较函数 cmp(x,y)
c、数据类型转换函数 int(),str()
d、字符串返回大写字母 upper() x.upper()
e、判断变量是否是字符串 isinstance(x,str)
(2)自定义函数
如果没有return 语句,函数执行完后也有返回结果,即None
(3)math包 --- 提供sin()/cos()\sqrt()函数
import math
(4)递归函数 ----- 使用时需注意防止栈溢出
汉诺塔 ------- 函数 move(n, a, b, c) 的定义是将 n 个圆盘从 a 借助 b 移动到 c。
def move(n,a,b,c):
if n == 1:
print(a,'->',c)
return
move(n-1,a,c,b)
print(a,'->',c)
move(n-1,b,a,c)
move(2,'A','B','C')
-
很简单的
第一步:把n-1个圆盘从 A借助C移动到 B move(n-1,a,c,b)
第二步:把剩余的第n个圆盘从 A移动到C A --> C
第三步:把移动到B的圆盘借助A从 B移动到C move(n-1,b,a,c)
搞定!
函数的默认参数作用是简化调用,你只需要把必须的参数传进去。但是在需要的时候,又可以传入额外的参数来覆盖默认参数值。.由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必须参数后面。eg:
# OK: def fn1(a, b=1, c=2): pass # Error: def fn2(a=1, b): pass
(6)可变参数 ----- 可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数:
def fn(*args): ---- fn() ---f('a') ----f('a','b')
7、切片
(1)List切片 ----- 与tuple切片一样
L[0:3] or L[ :3] ------ 从索引0开始取到索引3为止,但不包括索引3
L[ : ] ------ 从头到尾
L[ : : 2] ------ 第三个参数表示每N个取一个
L[-2: ] ------ 倒序切片
(2)字符串切片 ----- python 中没有对字符串截取的函数
‘ABCDEFG’[ :3] 'ABCDEFG'[-3: ] 'ABCDEFG'[ : :2]
(3)s.upper() ---- 字符串中字符变为大写字母的方法
8、迭代
(1)概念
(2)索引迭代 --- 由enumerate()函数自动把每个元素变为(index,element)的tuple,再迭代,才同时获得了索引和元素本身
python中,迭代永远是取出元素本身,而非元素的索引
(3)zip()函数 ------ 可以把两个list变为一个list
>>> zip([10, 20, 30], ['A', 'B', 'C']) [(10, 'A'), (20, 'B'), (30, 'C')]
(4)迭代dict的value ---- d.values(),将dict转换为一个包含所有value的list -----d.itervalues() 与 d.values()效果一样
(5)迭代dict的key和value ----- items()方法,把dict对象转换为包含tuple的list,可以同时获得key和value
9、列表生成式
(1)生成列表
[1,2,3,4,5,6,7,8,9,10] ----- range(1,11) [1,3,5,7,9] ---- range(1,10,2)
[1*1,2*2,3*3,...,10*10] ------ L = [] ------ [x*x for x in range(1,11)]
for x in range(1,11)
L.append(x*x)
(2)复杂表达式
-
tr代表一行 以<tr>开始,</tr>结束
td代表一格 以<td>开始,</td>介绍 中间的style就是颜色了
<tr><td>%s</td><td style="color:red">%s</td></tr>就代表有一行,有2个格子,第二个格子用红色显示!
在生成的表格中,对于没有及格的同学,请把分数标记为红色。
提示:红色可以用 <td style="color:red"> 实现。
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)
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)条件过滤
[2*2,4*4,...,10*10] ------ [x * x for x in range(1,11) if x % 2 == 0]
(4)多层表达式
['A1','A2','A3','B1','B2','B3','C1','C2','C3'] ------- >>> [m + n for m in 'ABC' for n in '123'] >>> L = []
for m in 'ABC':
for n in '123':
L.append(m + n)