python数据类型
python数据类型
1. 数字
Int 整形
Float 浮点 占8个字节(64位),52位表示底,11位表示指数,剩下一位表示符号。
Long 长整形不过是大一些的整数。
2. 布尔
真或假,0或1。 >>> 0 == False True >>> 1 == True True >>> 1 == False False
3. 字符串
%s 每一个字符串都会占有一个空间,不建议通过拼接的方式实现。 name = input("name:") age = input("age:") job = input("job:") #print("information of %s:\nNAME=%s\nAGE=%s\nJOB=%s" %(name,name,age,job)) print("information of name:" + name + "\nNAME:[]" +name +"\nAGE:[]" +age +"\nJOB:[]" +job ) C:\Python36\python.exe C:/Users/7KM/PycharmProjects/s18/day1/test.py name:wangx age:27 job:IT information of name:wangx NAME:[]wangx AGE:[]27 JOB:[]IT
3.1. 格式化输出%s%d
字符串是%s,整数%d,浮点数是%f name = input("name:") age = input("age:") job = input("job:") #print("information of %s:\nNAME=%s\nAGE=%s\nJOB=%s" %(name,name,age,job)) #print("information of name:" + name + "\nNAME:[]" +name +"\nAGE:[]" +age +"\nJOB:[]" +job ) msg = ''' information of %s: NAME=%s AGE=%s JOB=%s '''%(name,name,age,job) print(msg) name = input("name:") age = int(input("age:")) job = input("job:") msg = ''' information of %s: NAME=%s AGE=%d JOB=%s '''%(name,name,age,job) print(msg) C:\Python36\python.exe C:/Users/7KM/PycharmProjects/s18/day1/test.py name:wang age:27 job:IT information of wang: NAME=wang AGE=27 JOB=IT
3.2. 字符串功能
移除空白或替换strip name = input("name:").strip() age = int(input("age:")) job = input("job:").strip() msg = ''' information of %s: NAME=%s AGE=%d JOB=%s '''%(name,name,age,job) print(msg) C:\Python36\python.exe C:/Users/7KM/PycharmProjects/s18/day1/test.py name: wang age:27 job: IT information of wang: NAME=wang AGE=27 JOB=IT 分割 长度 索引 切片 顾首不顾尾 >>> a [1, 8, 2, 3, 'a', 'b'] >>> a[0:2] [1, 8] >>> >>> a [1, 8, 2, 3, 'a', 'b'] >>> a[2:6:1] [2, 3, 'a', 'b'] >>> >>> a [1, 8, 2, 3, 'a', 'b'] >>> a[-2:] ['a', 'b'] >>>
4. 列表
>>> name_list = ['wangxu','zhangsan','xiaowu'] >>> name_list ['wangxu', 'zhangsan', 'xiaowu'] >>> type(name_list) <class 'list'> >>> name_list[1] 'zhangsan' >>> name_list[0] 'wangxu' >>> name_list[2] 'xiaowu' >>> name_list ['wangxu', 'zhangsan', 'xiaowu'] >>> >>> dir(name_list) ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>>
4.1. append 追加
>>> name_list.append("wwww") >>> name_list ['wangxu', 'zhangsan', 'xiaowu', 'wwww'] >>> name_list.append("wangxu2") >>> name_list ['wangxu', 'zhangsan', 'xiaowu', 'wwww', 'wangxu2']
4.2. Index 位置索引
>>> name_list ['wangxu', 'zhangsan', 'xiaowu', 'wwww', 'wangxu2'] >>> name_list.index("xiaowu") 2 >>> name_list ['wangxu', 'zhangsan', 'xiaowu', 'wwww', 'wangxu2'] >>> name_list.index("wangxu") 0 >>> name_list.index("wangxu2") 4 >>>
4.3. Count 计数
>>> name_list ['wangxu', 'zhangsan', 'xiaowu', 'wwww', 'wangxu2', 'xiaowu'] >>> name_list.count("xiaowu") 2 >>>
4.4. Insert 插入
>>> name_list ['wangxu', 'zhangsan', 'xiaowu', 'wwww', 'wangxu2', 'xiaowu'] >>> name_list.insert(2,"lisi") >>> name_list ['wangxu', 'zhangsan', 'lisi', 'xiaowu', 'wwww', 'wangxu2', 'xiaowu'] >>>
4.5. Pop 删除最后一个
>>> name_list ['wangxu', 'zhangsan', 'lisi', 'xiaowu', 'wwww', 'wangxu2', 'xiaowu'] >>> name_list.pop() 'xiaowu'
4.6. remove 指定删除
>>> name_list ['wangxu', 'zhangsan', 'lisi', 'xiaowu', 'wwww', 'wangxu2'] >>> name_list.remove("wwww") >>> name_list ['wangxu', 'zhangsan', 'lisi', 'xiaowu', 'wangxu2'] >>> >>> name_list = ["www","!","*","22eee","eee333","eeee","www","www"] >>> name_list.count("www") 3 >>> for i in range(name_list.count("www")): ... name_list.remove("www") ... >>> name_list ['!', '*', '22eee', 'eee333', 'eeee']
4.7. reverse 反转
>>> name_list ['wangxu', 'zhangsan', 'lisi', 'xiaowu', 'wangxu2'] >>> name_list.reverse() >>> name_list ['wangxu2', 'xiaowu', 'lisi', 'zhangsan', 'wangxu'] >>>
4.8. sort排序
>>> name_list ['wangxu2', 'xiaowu', 'lisi', 'zhangsan', 'wangxu'] >>> name_list.sort() >>> name_list ['lisi', 'wangxu', 'wangxu2', 'xiaowu', 'zhangsan'] >>> >>> name_list ['www', '!', '*', '22eee', 'eee333'] >>> name_list.sort() >>> name_list ['!', '*', '22eee', 'eee333', 'www'] >>>
4.9. extend 扩展
>>> a [1, 8, 2, 3, 'a', 'b'] >>> b [1, 3, 5, 7] >>> a + b [1, 8, 2, 3, 'a', 'b', 1, 3, 5, 7] >>> a.extend(b) >>> a [1, 8, 2, 3, 'a', 'b', 1, 3, 5, 7] >>>
拆分字符串
>>> a [1, 8, 2, 3, 'a', 'b', 1, 3, 5, 7] >>> name = "wangxu" >>> a.extend(name) >>> a [1, 8, 2, 3, 'a', 'b', 1, 3, 5, 7, 'w', 'a', 'n', 'g', 'x', 'u'] >>>
4.10. 判断包含
>>> a [1, 8, 2, 3, 'a', 'b', 1, 3, 5, 7, 'w', 'a', 'n', 'g', 'x', 'u'] >>> 4 in a False >>> 2 in a True
5. 元组
Python的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
>>> a = (1,2,3,4,3,3,4,4) >>> type(a) <class 'tuple'> >>> dir(a) ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index'] >>> a.count(3) 3 >>> a.count(4) 3 >>> a.count(1) >>> names = ("alex","jack","eric") >>> names ('alex', 'jack', 'eric') >>> names.index('alex') 0 >>> names.count('jack') 1 >>>
5.1. 元组和列表转换
>>> a (1, 2, 3, 4, 3, 3, 4, 4) >>> type(a) <class 'tuple'> >>> list(a) [1, 2, 3, 4, 3, 3, 4, 4] >>> b=list(a) >>> type(b) <class 'list'> >>>
6. 字典
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中
字典的特性:
dict是无序的
key必须是唯一的,so 天生去重。键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} dict1 = { 'abc': 456 }; dict2 = { 'abc': 123, 98.6: 37 }; >>> dic = {'k1':'v1','k2':'v2'} >>> dic2 = dic dic dict( >>> dic2 = dict(k1='v1',k2='v2') >>> dic {'k2': 'v2', 'k1': 'v1'} >>> dic2 {'k2': 'v2', 'k1': 'v1'} >>> type(dic) <class 'dict'> >>> type(dic2) <class 'dict'> >>>
6.1. 增加
info = { 'stu1101': "TengLan Wu", 'stu1102': "LongZe Luola", 'stu1103': "XiaoZe Maliya", } >>> info info >>> info['stu004']="youyou" >>> info {'stu004': 'youyou', 'stu1103': 'XiaoZe Maliya', 'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola'}
6.2.修改
>>> info['stu1103']="sasa" >>> info {'stu004': 'youyou2', 'stu1103': 'sasa', 'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola'} >>> info.pop('stu1101')
6.3. 删除
del dict['Name']; # 删除键是'Name'的条目
dict.clear(); # 清空词典所有条目
del dict ; # 删除词典。但这会引发一个异常,因为用del后字典不再存在
>>> info.pop('stu1101') 'TengLan Wu' >>> info {'stu004': 'youyou2', 'stu1103': 'sasa', 'stu1102': 'LongZe Luola'} >>> >>> del info['stu1102'] >>> info {'stu004': 'youyou2', 'stu1103': 'sasa'} >>> >>> info.popitem() ('stu004', 'youyou2') ##随机删除 >>> info {'stu1103': 'sasa'} >>>
6.4. 查找
>>> info {'stu004': 'youyou', 'stu1103': 'XiaoZe Maliya', 'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola'} >>> 'stu004' in info True >>> 'stu00' in info #标准用法 False >>> 'youyou' in info #必须用key False >>> info.get('youyou') >>> info.get('stu004') #get获取 'youyou' >>> info['stu004'] 'youyou' >>> info['stu005'] #如果一个key不存在,就报错,get不会,不存在只返回None Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'stu005' >>> info.get('stu005')
6.5. 多级嵌套及操作
info = { 'wangxu':{ '2012':'毕业', '2013':'amap', '2014':'alibaba', } , 'xiaowu':{ '2015' : 'beijing' } } >>> info {'xiaowu': {'2015': 'beijing'}, 'wangxu': {'2012': '毕业', '2014': 'alibaba', '2013': 'amap'}} >>> info['wangxu'] {'2012': '毕业', '2014': 'alibaba', '2013': 'amap'} >>> info['wangxu']['2014'] 'alibaba' >>>
6.6. Setdefault
如果键在字典中,返回这个键所对应的值。如果键不在字典中,向字典 中插入这个键,并且以default为这个键的值,并返回 default。default的默认值为None
>>> wangxu = { ... '2012':'毕业', ... '2013':'amap', ... '2014':'alibaba', ... } >>> >>> wangxu {'2012': '毕业', '2014': 'alibaba', '2013': 'amap'} >>> wangxu.setdefault('2012') '毕业' >>> wangxu.setdefault('2016','xian') 'xian' >>> wangxu {'2012': '毕业', '2014': 'alibaba', '2013': 'amap', '2016': 'xian'} >>> wangxu.setdefault('2017') >>> wangxu {'2012': '毕业', '2014': 'alibaba', '2013': 'amap', '2017': None, '2016': 'xian'}
6.7. Update
update() 函数把字典dict2的键/值对更新到dict里
>>> wangxu {'2012': '毕业', '2014': 'alibaba', '2013': 'amap', '2017': None, '2016': 'xian'} >>> b = {1:2,3:4} >>> wangxu.update(b) >>> wangxu {3: 4, '2012': '毕业', '2014': 'alibaba', '2013': 'amap', '2017': None, 1: 2, '2016': 'xian'} >>>
6.8. Items遍历
tems() 函数以列表返回可遍历的(键, 值) 元组数组
>>> wangxu {3: 4, '2012': '毕业', '2014': 'alibaba', '2013': 'amap', '2017': None, 1: 2, '2016': 'xian'} >>> wangxu.items() dict_items([(3, 4), ('2012', '毕业'), ('2014', 'alibaba'), ('2013', 'amap'), ('2017', None), (1, 2), ('2016', 'xian')]) >>>
6.9. 循环
>>> for key,value in wangxu.items(): #会先把dict转成list,数据里大时莫用 ... print(key,value) ... 3 4 2012 毕业 2014 alibaba 2013 amap 2017 None 1 2 2016 xian >>> for k in wangxu: ... print(k,wangxu[k]) ... 3 4 2012 毕业 2014 alibaba 2013 amap 2017 None 1 2 2016 xian >>>
7. set集合
http://www.cnblogs.com/alex3714/articles/5717620.html
集合是一个无序的,不重复的数据组合,它的主要作用如下:
- 去重,把一个列表变成集合,就自动去重了
- 关系测试,测试两组数据之前的交集、差集、并集等关系
-
s = set([3,5,9,10]) #创建一个数值集合 t = set("Hello") #创建一个唯一字符的集合 a = t | s # t 和 s的并集 b = t & s # t 和 s的交集 c = t – s # 求差集(项在t中,但不在s中) d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中) 基本操作: t.add('x') # 添加一项 s.update([10,37,42]) # 在s中添加多项 使用remove()可以删除一项: t.remove('H') len(s) set 的长度 x in s 测试 x 是否是 s 的成员 x not in s 测试 x 是否不是 s 的成员 s.issubset(t) s <= t 测试是否 s 中的每一个元素都在 t 中 s.issuperset(t) s >= t 测试是否 t 中的每一个元素都在 s 中 s.union(t) s | t 返回一个新的 set 包含 s 和 t 中的每一个元素 s.intersection(t) s & t 返回一个新的 set 包含 s 和 t 中的公共元素 s.difference(t) s - t 返回一个新的 set 包含 s 中有但是 t 中没有的元素 s.symmetric_difference(t) s ^ t 返回一个新的 set 包含 s 和 t 中不重复的元素 s.copy() 返回 set “s”的一个浅复制