python基础学习
一、list
就是python里面的数组,例如L=['abc',100,true] ,python是一门动态语言,数组里面的可以是不同类型的。然后可以按索引访问比如L[1]便是100,L[-1]便是true。
添加元素可以使用append(),参数为要加入的元素,或者使用insert(1,'paul'),第一个参数为插入的位置索引。
删除元素为pop(),可以传入参数表示位置索引,不传则删除最后一个。
二、tuple
与list很相似,但是不能增删改,有点类似于枚举,语法是这样 T=('haha','hehe',1000)
三、dict
字典,有点类似于对象,形式是下面这样的。
d = { 'Adam':95, 'Lisa':85, 'Bart':59, 'Paul':75 }
访问value的时候可以这样d['Lisa'],当然也可以这样d.get('Lisa')。
另外这个key必须是不可变的,也就是说可以是字符串、整数、浮点数或者元组,但不能是数组。
另外这个字典可以用for...in...来进行遍历。
for key in d: print key print d[key]
四、set
set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。
set的语法是这样的。s = set(['Adam','Lisa','Bart','Paul'])
set不可以用索引来访问,这可以用in来判断。例如'adam' in s返回的会是true。
另外set也可以用for...in...来进行遍历。
add()方法用于添加一个元素,remove()方法用于删除一个元素。
五、函数
abs(),接受一个数字,返回绝对值。
cmp(x,y),若x<y,返回-1,若x>y,返回1。
int(),将其他类型数据转换为整数。
str(),将其他类型数据转化为字符串。
sum([1,2,3]),接收一个list,返回数组元素之和。
一个典型的自定义函数如下所示:
def square_of_sum(L): sum = 0 for i in L: sum = sum + i*i return sum print square_of_sum([1, 2, 3, 4, 5]) print square_of_sum([-5, 0, 5, 15, 25])
或者这样,py3后面打印的内容需要加();
import math def quadratic_equation(a, b, c): det = b*b - 4*a*c x1 = (-1*b + math.sqrt(det))/(2*a) x2 = (-1*b - math.sqrt(det))/(2*a) return x1,x2 print (quadratic_equation(2, 3, 0)) print (quadratic_equation(1, -6, 5))
嗯,也可以这样,这是一个汉诺塔。
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(4, 'A', 'B', 'C')
或者下面这样,带默认参数的。
def greet(str='world.'): print 'hello,'+str greet() greet('bart.')
或者可以传入不定参数。
def average(*args): if args: return sum(args)*1.0/len(args) else: return 0.0 print average() print average(1, 2) print average(1, 2, 2, 3, 4)
六、切片
range(1,10)表示从1到10的一个list,可以传入第三个参数表示步长。
同样L[2:10:2] 表示2到10的数字,每隔两个取一个,便是索引为2,4,6,8的元素
当然也可以这样L[-10:]取出最后的十个元素。
也可以对字符串进行切片,像下面这样:
def firstCharUpper(s): return s[0].upper() + s[1:] print firstCharUpper('hello') print firstCharUpper('sunday') print firstCharUpper('september')
七、迭代
像下面这样,用for...in...可以对list,tuple,set,dict进行迭代。
例如:
for i in range(1,101): if i%7 == 0: print i
可以用enumerate()方法来获得元素的索引
L = ['Adam', 'Lisa', 'Bart', 'Paul'] for index, name in enumerate(L): print index, '-', name
嗯,例如这样,zip()方法可以将两个list变成一个,例如:
>>> zip([10, 20, 30], ['A', 'B', 'C']) [(10, 'A'), (20, 'B'), (30, 'C')]
values()方法可以拿到一个dict里面所有的value,组成一个list,例如下面这样。
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 } sum = 0.0 for v in d.values(): print v sum = sum + v print sum/len(d.values())
items()方法可以同时拿到key和value
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 } sum = 0.0 for k, v in d.items(): sum = sum + v print k+':'+str(v) print 'average',':',sum/len(d)
八、生成列表
嗯,就是这样,循环的时候生成一个列表。
>>> [x * x for x in range(1, 11)] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
当然,输出也可以用一个函数
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) else: 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>'
也可以加入一些判断条件
def toUppers(L): return [x.upper() for x in L if isinstance(x,str)] print toUppers(['Hello','world',101])
然而他也是可以进行for嵌套的
>>> [m + n for m in 'ABC' for n in '123'] ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']