Python学习笔记

Python学习笔记之基础

Python缩进

1. Python用相同缩进来代表同一个代码块,而某2些语言则是用花括号

2. 缩进最好使用四个空格,不要混用和使用Tab

3. 退出缩进多敲一个回车

if语句

if statement:
    statement
elif statement:
    statement
else statement:
    statement

print 'That is All'

for语法


    for variable in list/tuple:
        statement

则variable每次循环就会前进一个,代表一个元素

for 和 in 是Python的关键字

int i = 0
while i<2:
    statement

循环可以多层嵌套,判断条件也很灵活

for x in [1, 2, 3]:
    for y in (1, 2, 3):
        print x+y
#输出 2 4 6

同样while也可以嵌套,注意缩进即可

continue关键字的用法和C语言一样

list有序表

`[value, ...]` 创建语法,其内元素类型可不相同

1. `[index]` 索引,也可用来赋值

2. `append()` 将元素加入末尾

3. `insert()`将元素插入开头

4. `pop()`剔除最后一个元素,加上索引参数就剔除指定位置元素

tuple有序表

`(value, ...)` 创建语法,与list不同的是,创建后不可改变

1. `( )` 在创建tuple单元素的时候,记得加 , 以免造成语法歧义 >>> t = (2,)

2. `t[1]`同样使用索引找到想要的值

"可变的"tuple 原理即在tuple中加入


    list >>> t = (1,2,['Kandle', 'Bankgh'])

就可以使用tuple的索引到list进行增减

dict无序表

`{'Search_name': value, ... }`创建语法,就像是字典,通过"名称(专业术语叫key)"来查找值(value),

原理是数据结构哈希表或者叫散列表(Hash Table)


    >>> d = {'Leao': 65, 'Candy': 89, 'Saver': 86}

1. `d['Leao']` 同样使用索引找到对应的值

如果只是使用`[ ]`来索引,那么当key不存在时,程序将出错,可以使用dict所带的一种方法:

2. `get('Leao')` 同样返回对应的值,当key不存在时,将返回 None 而不是让程序报错

3. key是不可变的,不可重复的。value无限制

4. 高级应用:

充分利用key的特性,由于Python中数字类型,字符串和tuple类型不可变,故可以用来做key


    t1 = {'string': [1, 2, 3], 20: 'string', [1, 2]: True}

5. `d['Newone'] = 99` 向已有的dict中添加新成员

set无序表

与dict相似,只是少了value,只有key

(['A', ...]) 创建语法

1. 与list某些特性相似,打印时显示所有元素,但顺序不一定是加入的顺序


    >>> s = (['A', 'B', 'C', 'C']

print s 可能输出 set(['A', 'C', 'B'])

2. set类型只有key没有value,那么访问它们时,返回的不再像dict那样是value,而是 True 或 False

3. set可以用关键字 in 访问 >>> 'A' in s 返回Ture

4. add() 添加元素

5. remove() 删除元素

函数

1. 内置函数可以使用 help(fun_name) 查看用法

类型转换函数也是内置的,比如将字符串转为数字

>>> int('123')
>>> 123

2. 编写函数

格式

def my_function(args):
    statement
    return

其中def是定义函数的关键字,其后紧跟一个空格,函数名字,括号,括号中有传入的形式参数,冒号,

函数体(同样是缩进代表同一个代码块),return也是关键字,后面可跟返回值,如果没有则默认返回None

3.Python的函数可以返回多个值,接收的时候可以用多个变量接受,用逗号隔开。

实际上Python只是返回一个tuple类型的值,并不是真的返回多个值,只不过多个变量可以接收同一个tuple类型的值,并按照相应位置赋值:

#假设move_north函数接收一个距离,并返回下一个坐
#标的值
>>> x, y = move_north(200)
>>> print x, y
>>> 133.55 226.17
>>> r = move_north(200)
>>> print r
>>>(133.55, 226.17)

4. 函数的默认参数

可以让某些函数的参数拥有默认值,来简化函数调用

def my_function1(x, y=10):
    return x+y
def my_function2(x, y):
    return x+y
>>>print my_function1(10), my_function1(10,10)
>>>20, 20
>>>print my_function2(10) #报错
>>>print my_function2(10, 10)
>>>20

被设置默认值的参数后面不能有没有默认参数的参数。

5.可变参数的函数

def averages(*args):
    sum = 0.0
    count = 0.0
    for val in args:
        sum = sum + val
        count = count + 1.0
    return sum/count

把args变量看作一个tuple即可

list和tuple的 切片操作

即取出其中部分的一种操作

>>>L = [1, 2, 3, 4, 5, 6]
>>>L[0:3]
>>>[1, 2, 3]
>>>L[:]
>>>[1, 2, 3, 4, 5, 6]
#接收第三个参数,用来增加条件
>>>L[::2]
>>>[1, 3, 5]

切片操作的用法

list[start_index:end_index+1:step]
#索引为end_index+1位置上的元素不会被取到
#步长为-1,就说明要倒序取

tuple的切片操作与list一致

字符串的切片操作

>>>'ABCD'[:2]
>>>'AB'

关于迭代

1. for总是取出某个集合中的元素,而不是索引

如果我们想要索引,可以使用enumerate()函数

#假设有L['Linda', 'Papara', 'Gerada', 'Bazinga']
for index, value in enumerate(L):
    print index, '-', value
>>>0 - Linda 1 - Papara 2 - Gerada 3 - Bazinga

实际上enumerate自动把每个元素和其对应的索引组合成一个tuple类型,接下来就行了。

2. 迭代dict中的value

可以使用dict的values()方法或者intervalues(),两个方法效果一样,差别在于内存的消耗

for val in dictionary.value():
    print val
>>>#打印出dict 中的所有值而不是key

同时输出key和value的方法:

使用dict的items()和iteritems()方法

for key, value in dictionary.items():
    print key, '-', value
>>>'Linda' - 65 ...#打印出所有的key value

*生成列表

1. range()函数可以生成既定步长的列表

>>>range(1,10)
>>>[1, 2, 3, 4, 5, 6, 7, 8, 9]

2. 有一种Python自带的列表语法

>>>[x*x for x in range(1,10)]
>>>[1, 4, 9, 16, 25, 36, 49, 64, 81]

语法是,先写一个元素的表达式(你的元素要满足的条件,这里是x*x),其次跟一个for迭代式子。放在一个list生成式里

#range同样是一个有默认参数的内置函数
range(start_index, end_index+1, step)

3. 复杂表达式

在列表生成中,不仅可以使用for迭代,我们还能让if剔除迭代中不想要的元素

>>>[x*x for x in range(1,10) if x % 2 == 0]
>>>[4, 16, 36, 64]
#只有if语句是真时,才会出现在生成的list中

4. 列表生成中,同样可以嵌套循环

5.高级应用,使用列表生成来制作网页中的部件,如生成表格

Written on April 6, 2015