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 '
'.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']