光荣之路Python公开课第二讲 Python变量和数据类型
一 Python变量
1. 以数字,字母和下划线组成的一个字符串, Python变量不能以数字开头, 由于_在Python中的特殊作用建议也不要使用下划线作为开头来定义普通变量. 变量的定义尽量做到见名思意.
2. 变量在使用之前一定要先赋值,否则会报NameError.
3. 变量又分为可变变量和不可变变量,
a. 可变变量包括: 列表, 字典
b. 不可变变量包括: 数字,元组,字符串.
4. 多个变量赋值: a = b = c = 1, a,b,c = 1,2,3
二 Python的数据类型
1. 数字: int, float, long, complex (可用type(val) 查看变量的类型)
2. 字符串: 一组用''或"" 括起来的字符
如: 'abc', "abcd"
+ 多个字符串拼接 "abcd" + 'efg' 得到"abcdefg"
* 重复多个该字符串 'ab' * 2 得到 "abab"
%s: 格式化字符串
如: print 'My name is %s and age is %d' %('chen',18) #注意百分号和前面没有标点符号
3. 列表 list
1. 定义: 用[]扩起来的一组序列 如: [1,2,3,4], ['a','b','c','d']
2. + 多个列表连接, [1,2,3,4] + ['a','b','c','d'] = [1,2,3,4,'a','b','c','d']
3. * 重复列表中的内容N次, [1,2] * 2 = [1,2,1,2]
4. append(),在列表最后追加某个元素. lt = [1,2], lt.append(3)
5. insert(index,obj), 在列表index位置插入元素 obj. lt.insert(1,4).
6. index(obj), 在列表中找到obj元素的index, 匹配第一个找到的. lt.index(2)
7. count(obj), 统计obj在列表中出现的次数, lt.count(2)
8. extend(list), 在列表后扩展另一个列表: lt.extend(lt2)
9. del(lt[index]), 删除列表中位于index处的元素, del(lt[2])
10. remove(obj),删除列表中obj元素, lt.remove(2) #匹配第一个找到的.
11. pop(),弹出列表中最后一个元素, lt.pop() #返回弹出的元素
12. pop(index),弹出位于index处的元素, lt.pop(2) #返回弹出的元素
13. sort(), 对原序列排序 lt.sort()
14. reverse(), 对序列进行翻转,lt.reverse()
4. 元组
1. 元组中的内容是不可变的, 其他操作和列表蕾丝, 相当于一个只读列表.
2. 定义定义元组时如果元组中只有一个元素则需要在第一个元素后加上逗号 如: tup = (1,) 否则会被判定为普通的数据类型
5. 字典,
1. 定义: 由 key 和value 组成的键值对 key和value中间以 : 分隔, 多个键值对之间以 , 隔开. 字典中的可以必须是唯一的不可变的,不能用列表作为字典的key. 定义字典是如果同一个key被赋值多次则最后一次赋值会被记录,其他的会被忽略. 字典中各键值对没有固定的顺序.
2. dict.keys(), # 以列表形式返回字典中所有的key.
3. dict.values(), # 以列表形式返回字典中所有的value.
4. dict.items(), # 以元组形式返回键值对,多个键值对组成一个列表.
5. dict.has_key(key), #返回dict中是否包含某个key
6. 字典的两种创建方法:
a. 使用dict方法, dic = dict((['name','Yangning'],['age',2]))
b. 使用內建方法fromkeys, dic2 = {}.fromkeys(('x','y'),1) #创建出来的每个key具有相同的默认值1, 如果不给默认值则创建出来的字典每个key对应的值为None.
7. 字典遍历
a. dict['key'] # 取出字典中key对应的value值.
b. dict.get('key',default) # 使用get方法取出key对应的value值, 如果没有该key则返回给定的默认值default.
c. for key in dict:
print key,dict[key] # 循环遍历dict中的每个key并打印键值对
d. for key,value in dict.items():
print key,value # 同 c
8. 增改删字典
1. dict['key'] = value. # key 在原字典中不存在, 则将key 和value作为一个键值对添加到字典中.
2. dict['key'] = value # key在原字典中存在, 则更新该key对应的value值.
3. dict.update(dict2) # 用dict2 更新dict如果有相同的key则更新, 如果没有则添加.
4.del dict['key'] # 删除key对应 的键值对.
5. dict.pop('key') # 弹出key对应的键值对.
6. dict.clear() #清空字典.
7. del dict #删除字典.
9. json模块补充
import json
json.dumps() #编码 将字典转成字符串.
json.loads() #解码, 将字符串转成字典
10. 数据类型转换:
字典->字符串: str(dict)
字典->元组: tuple(dict)
字典->列表: list(dict)
元组->字符串: tuple.__str__()
元组->列表: list(tuple)
列表->字符串: list.__str__()
列表->元组: tuple(list)
字符串->元组: tuple(str)
字符串->列表: list(str)
字符串->字典:eval(str) #注意字符串的内容要为字典的格式.
11. 序列的基本操作
1. 索引
2. 切片 [start:end:step] 从start 开始到end结束每隔step取一个值.包含start但不包含end.用负数作为step时务必要使end 大于start否则切出来的序列为空. 当step为负数时为反向取值.
3. len() #返回序列的长度.
4. + 链接序列
5. * 重复多次序列
6. in 判断某个元素是否在序列中.
7. max() 返回序列中最大的元素.
8. min() 返回序列中最小的元素.
9. cmp() 比较两个序列.