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.高级应用,使用列表生成来制作网页中的部件,如生成表格