Python之旅Day2 元组 字符串 字典 集合
元组(tuple)
元组其实跟列表差不多,也是存一组数,与列表相比,元组一旦创建,便不能再修改,所以又叫只读列表。
语法:
names = ("Wuchunwei","Yangmengmeng","Lvs") #元组只有2个方法,一个是count,一个是index
>>> tuple1 = (1,2,'3',4,'5') >>> print (tuple1[0]) 1 >>> print (tuple1[-1]) 5 >>> print (tuple1[1:3]) #元组也可以进行切片操作。对元组切片可以得到新的元组。 (2, '3') >>>
枚举
>>> for i,v in enumerate(range(3,10)): ... print(i,v) ... 0 3 1 4 2 5 3 6 4 7 5 8 6 9 >>>
应用举例:
#代码 product_list = [ ['IPhone',6888], ['ofo',399], ['MackBook',12866], ] for index,i in enumerate(product_list): print("%s,\t%s\t%s" %(index,i[0],i[1])) #运行结果 C:\Python35\python.exe D:/Python代码目录/day2/list.py 0, IPhone 6888 1, ofo 399 2, MackBook 12866 Process finished with exit code 0
字符串操作(str)
特性:不可修改
常用操作:
>>> name = 'chunwei wu' >>> name.capitalize() #首字母大写 'Chunwei wu' >>> >>> name = 'CHUNWEI WU' >>> name.casefold() #全部大写变小写 'chunwei wu' >>> >>> name 'CHUNWEI WU' >>> name.center(20,"-") #输出20个字符,不足的以"-"补全 '-----CHUNWEI WU-----' >>> >>> name 'CHUNWEI WU' >>> name.count('U') #统计(默认是统计所有,可以指定统计范围) 2 >>> name.count('U',0,10) 2 >>> name.count('U',0,9) 1 >>> >>> name 'CHUNWEI WU' >>> name.endswith("Wu") #以什么结尾,匹配到则为真(返回True),匹配不到则为假(返回False) False >>> name.endswith("WU") True >>> name.endswith("CHUNWEI") False >>> >>> "Chunwei\tWu".expandtabs(10) #将\t转换成多长的空格 'Chunwei Wu' >>> "Chunwei\tWu".expandtabs(15) 'Chunwei Wu' >>> name 'CHUNWEI WU' >>> name.find('Wu') #查找Wu,找到返回其索引,找不到返回-1 -1 >>> name.find('CHUNWEI') 0 #format格式的三种赋值方式 >>> msg = "my name is {},and age is {}" >>> msg.format("chunweiwu",23) 'my name is chunweiwu,and age is 23' >>> >>> msg = "my name is {0},and age is {1}" >>> msg.format("chunweiwu",23) 'my name is chunweiwu,and age is 23' >>> >>> msg = "my name is {name},and age is {age}" >>> msg.format(age=23,name="chunweiwu") #无需位置对齐 'my name is chunweiwu,and age is 23' >>> #format_map格式赋值 >> > msg = "my name is {name}, and age is {age}" >> > msg.format_map({'name': 'chunweiwu', 'age': 23}) 'my name is chunweiwu, and age is 23' >>> "abCDe".isalpha() #是不是字母,是则为True,不是则为False True >>> "123e".isalpha() False >>> >>> "0".isdigit() #是不是正整数,是返回True,否返回False True >>> "123".isdigit() True >>> "-5".isdigit() False >>> >>> "al_ex".isidentifier() #是不是一个合法的变量名,是返回True,否返回False True >>> "2x".isidentifier() False >>> >>> "wei".islower() #是不是小写(全部) True >>> "weiG".islower() False >>> >>> "3.1".isnumeric() #是不是数字(不带小数点),是为True,否为False False >>> "31".isnumeric() True >>> "31.45".isnumeric() False >>> >>> "weiG".isupper() #是不是大写(全部) False >>> "WeiG".isupper() False >>> "WG".isupper() True >>> >>> print("My Name Is Wu".istitle()) #是不是首字母都是大写 True >>> print("My Name Is su".istitle()) False >>> >>> ",".join("hello") #以指定的字符连接字符 'h,e,l,l,o' >>> "-".join("wuchunwei") 'w-u-c-h-u-n-w-e-i' >>> "|".join(["hello","good","hi"]) 'hello|good|hi' >>> >>> "chunwei".ljust(15,'-') #以-符号右填充共15个字符 'chunwei--------' >>> >>> "chunwei".rjust(15,'-') #以-符号左填充共15个字符 '--------chunwei' >>> >>> "ChunWei".lower() #将大写变小写 'chunwei' >>> "CHUNWEI".lower() 'chunwei' >>> >>> " wu \n".rstrip() #去右空格 ' wu' >>> "\n wuchunwei \n".rstrip() '\n wuchunwei' >>> >>> "\n wu \n".lstrip() #去左空格 'wu \n' >>> " \n wuchunwei ".lstrip() 'wuchunwei ' >>>
>>> name="wuchunwei"
>>> name.rstrip('i')#右边指定字符串
'wuchunwe'
>>> name.rstrip('ei')
'wuchunw'
>>> name.rstrip('wi')
'wuchunwe'
>>> name.lstrip('w') #去左边指定字符串
'uchunwei'
>>> name.lstrip('wi')
'uchunwei'
>>> name.lstrip('u')
'wuchunwei'
>>>
#等位替换(加密解密) >>> from_str = "!@#$%^&" >>> to_str = "abcdefg" >>> trans_table = str.maketrans(to_str,from_str) >>> print("backup".translate(trans_table)) @!#kup >>> >>> "hello world 666 good".partition("w") #以指定字符分割成3份(指定的字符不存在以空分割) ('hello ', 'w', 'orld 666 good') >>> "hello world 666 good".partition("666") ('hello world ', '666', ' good') >>> "hello world 666 good".partition("z") ('hello world 666 good', '', '') >>> >>> "hello".replace("l","L") #以特定字符替换现有字符,可以设定替换次数(默认替换全部) 'heLLo' >>> "hello".replace("h","HHH") 'HHHello' >>> "hello".replace("l","L",1) 'heLlo' >>> >>> "wu\n chun\nwei".splitlines() #以\n分隔 ['wu', ' chun', 'wei'] >>> "\nwuchun\nwei".splitlines() ['', 'wuchun', 'wei'] >>> "\nwuchun\nwei".split("u") #以指定的字符分割(保留特殊字符) ['\nw', 'ch', 'n\nwei'] >>>
#计数器
import collections
obj = collections.Counter('zzzfcsdvc,dasdwezzrggfdgeqwewewe')
print(obj)
""" 结果: C:\Python35\python.exe D:/Python代码目录/Python_codeing/caixing_codeing/day3/有序字典.py
Counter({'z': 5, 'e': 5, 'w': 4, 'd': 4, 'g': 3, 'f': 2, 's': 2, 'c': 2, 'r': 1, ',': 1, 'q': 1, 'v': 1, 'a': 1}) """
字典(dict)
字典是一种key-value的数据类型,使用就像上学时用的字典,可以通过笔划、字母来查对应页的详细内容
语法:
info = { 'stu1101': "Chunwei Wu", 'stu1102': "Mengmeng Yang", 'stu1103': "Qi Wei", }
字典的特性:
1)dict是无序的
2)key必须是唯一的,so 天生去重
快速定义一个字典(fromkeys)
###实例代码: dic1=dict.fromkeys('abc',1) #分别以a、b、c为key,1为value为键值创建字典(去重) print("dict1===>",dic1) dic2=dic1.fromkeys('hello',123) print("dict2===>",dic2) dic3=dict.fromkeys([1,2,3],{'names':'weige','age':25}) print("dict3===>",dic3) ###运行结果: C:\Python35\python.exe D:/Python代码目录/day3/字典.py dict1===> {'a': 1, 'b': 1, 'c': 1} dict2===> {'l': 123, 'o': 123, 'e': 123, 'h': 123} dict3===> {1: {'age': 25, 'names': 'weige'}, 2: {'age': 25, 'names': 'weige'}, 3: {'age': 25, 'names': 'weige'}} Process finished with exit code 0
字典的常见操作:
===》增加 >>> info {'stu1101': 'Chunwei Wu', 'stu1103': 'Qi Wei', 'stu1102': 'Mengmeng Yang'} >>> info["stu1104"] = "吴春伟" #增加一个字典数值 >>> info {'stu1101': 'Chunwei Wu', 'stu1103': 'Qi Wei', 'stu1104': '吴春伟', 'stu1102': 'Mengmeng Yang'} #字典是无序的 >>> ===》修改 >>> info {'stu1101': 'Chunwei Wu', 'stu1103': 'Qi Wei', 'stu1104': '吴春伟', 'stu1102': 'Mengmeng Yang'} >>> info['stu1104'] = "WUCHUNWEI" #修改(重新赋值) >>> info {'stu1101': 'Chunwei Wu', 'stu1103': 'Qi Wei', 'stu1104': 'WUCHUNWEI', 'stu1102': 'Mengmeng Yang'} >>> ===》删除 >>> info {'stu1101': 'Chunwei Wu', 'stu1103': 'Qi Wei', 'stu1104': 'WUCHUNWEI', 'stu1102': 'Mengmeng Yang'} >>> info.pop("stu1104") #标准删除姿势(需要指定key键值) 'WUCHUNWEI' >>> info {'stu1101': 'Chunwei Wu', 'stu1103': 'Qi Wei', 'stu1102': 'Mengmeng Yang'} >>> >>> del info['stu1101'] #字典删除方式2 >>> info {'stu1103': 'Qi Wei', 'stu1102': 'Mengmeng Yang'} >>> >>> info {'stu1101': 'Nginx', 'stu1103': 'Qi Wei', 'stu1105': 'PHP', 'stu1104': 'Apache', 'stu1102': 'Mengmeng Yang'} >>> info.popitem() #popitem随机删除 ('stu1101', 'Nginx') >>> info {'stu1103': 'Qi Wei', 'stu1105': 'PHP', 'stu1104': 'Apache', 'stu1102': 'Mengmeng Yang'} >>> info.popitem() ('stu1103', 'Qi Wei') >>> info {'stu1105': 'PHP', 'stu1104': 'Apache', 'stu1102': 'Mengmeng Yang'} >>> info.popitem() ('stu1105', 'PHP') >>> info {'stu1104': 'Apache', 'stu1102': 'Mengmeng Yang'} >>> ===》查找 >>> info {'stu1104': 'Apache', 'stu1102': 'Mengmeng Yang'} >>> "stu1102" in info #标准用法 True >>> info.get("stu1102") #获取(查找) 'Mengmeng Yang' >>> info["stu1102"] #第二种方法 'Mengmeng Yang' >>> >>> info.get("stu1108") #当查找一个不存在的字典key时:get方式为空不报错;第二种方式会报错 >>> info["stu1108"] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'stu1108' >>> ===》更新 >>> info {'stu1101': 'WeiGe', 'stu1102': 'Mengmeng Yang'} >>> user = {1:'a',2:'b',"stu103":"吴春伟"} >>> info.update(user) >>> info {'stu1101': 'WeiGe', 2: 'b', 1: 'a', 'stu103': '吴春伟', 'stu1102': 'Mengmeng Yang'} >>> ===》其他用法操作 >>> info {'stu1104': 'Apache', 'stu1102': 'Mengmeng Yang'} >>> info.values() #获取字典的value值 dict_values(['Apache', 'Mengmeng Yang']) >>> >>> info.keys() #获取字典的key值 dict_keys(['stu1104', 'stu1102']) >>> >>> info {'stu1104': 'Apache', 'stu1102': 'Mengmeng Yang'} >>> info.setdefault("stu1102","WeiGe") #当原key存在不做改变(当key不存在时,新增一对key:value) 'Mengmeng Yang' >>> info {'stu1104': 'Apache', 'stu1102': 'Mengmeng Yang'} >>> info.setdefault("stu1101","WeiGe") #当key不存在时,新增一对key:value(当原key存在不修改) 'WeiGe' >>> info {'stu1101': 'WeiGe', 'stu1104': 'Apache', 'stu1102': 'Mengmeng Yang'} >>> >>> info {'stu1101': 'WeiGe', 2: 'b', 1: 'a', 'stu103': '吴春伟', 'stu1102': 'Mengmeng Yang'} >>> info.items() #转换为列表 dict_items([('stu1101', 'WeiGe'), (2, 'b'), (1, 'a'), ('stu103', '吴春伟'), ('stu1102', 'Mengmeng Yang')]) >>>
两种取字典里的ke、value值得方式 (循环dict)
===》实例 user = { "stu1101":"chunweiwu", "stu1102": "Mengmeng Yang", "stu1103": "Qi Wei", "stu1104": "Helen", } print("###方法1###") for key in user: print(key,user[key]) print("###方法2(会先把dict转为list,大数据量是不推荐使用)###") for k,v in user.items(): print(k,v) ===》结果 C:\Python35\python.exe "D:/Python代码目录/day 1/dict.py" ###方法1### stu1104 Helen stu1102 Mengmeng Yang stu1103 Qi Wei stu1101 chunweiwu ###方法2(会先把dict转为list,大数据量是不推荐使用)### stu1104 Helen stu1102 Mengmeng Yang stu1103 Qi Wei stu1101 chunweiwu Process finished with exit code 0
深浅拷贝(copy|deepcopy)
import copy ###浅拷贝 copy.copy() ###深copy copy.deepcopy() 实例: dic1={'name':'weige','age':25,'gfs':["MwngQi","Roses","Helly"]} dic2=dic1 dic3=copy.copy(dic1) #字典里的浅copy就是copy模块里的copy print(dic1) print(dic2) print(dic3) 结果: C:\Python35\python.exe D:/Python代码目录/day3/字典.py {'gfs': ['MwngQi', 'Roses', 'Helly'], 'name': 'weige', 'age': 25} {'gfs': ['MwngQi', 'Roses', 'Helly'], 'name': 'weige', 'age': 25} {'gfs': ['MwngQi', 'Roses', 'Helly'], 'name': 'weige', 'age': 25} Process finished with exit code 0
###代码### info ={ 'cpu':[80,], 'disk':[90,], 'mem':[85,] } print("befo===> ",info) print("======copy======") info_c=copy.copy(info) info_c['mem'][0]=100 print("befo===> ",info) print("copy===> ",info_c) print("======deepcopy======") info_dc=copy.deepcopy(info) info_dc['cpu'][0]=50 print("befo===> ",info) print("deepcopy===> ",info_dc) ###结果### C:\Python35\python.exe D:/Python代码目录/day3/字典.py befo===> {'mem': [85], 'cpu': [80], 'disk': [90]} ======copy====== befo===> {'mem': [100], 'cpu': [80], 'disk': [90]} copy===> {'mem': [100], 'cpu': [80], 'disk': [90]} ======deepcopy====== befo===> {'mem': [100], 'cpu': [80], 'disk': [90]} deepcopy===> {'mem': [100], 'cpu': [50], 'disk': [90]} Process finished with exit code 0
集合(set)
集合是一个无序的、不重复的数据组合,主要作用如下:
1)去重:把一个列表变成集合,就自动去重了
2)关系测试:测试两组数据之前的交集、差集、并集等测试
集合的常见内置方法
###交集:取共有部分 stu_1={'hello','weige','monkey','kitty'} stu_2={'weige','mengqi','tiger'} print(stu_1&stu_2) print(stu_1.intersection(stu_2)) C:\Python35\python.exe D:/Python代码目录/day3/集合.py {'weige'} {'weige'} Process finished with exit code 0 ###并集:取包含两个集合所有的元素 num_1={1,2,3,4,5} num_2={2,3} ##并集:取包含所有的 print(num_1|num_2) print(num_1.union(num_2)) C:\Python35\python.exe D:/Python代码目录/day3/集合.py {1, 2, 3, 4, 5} {1, 2, 3, 4, 5} Process finished with exit code 0 ###差集:用集合1中减去集合2中有的,剩余的就为集合1与集合2的差集 num_1={1,2,3,4,5} num_2={2,3} print(num_1-num_2) print(num_1.difference(num_2)) print(num_2-num_1) #没有这为空 C:\Python35\python.exe D:/Python代码目录/day3/集合.py {1, 4, 5} {1, 4, 5} set() Process finished with exit code 0 ###对称差集:集合1与集合2所有的减去两者共有的剩下所有 num_1={1,2,3,4,5} num_2={2,3} print(num_1^num_2) print(num_1.symmetric_difference(num_2)) C:\Python35\python.exe D:/Python代码目录/day3/集合.py {1, 4, 5} {1, 4, 5} Process finished with exit code 0 ###子集:小于等于,返回布尔值;True和False num_1={1,2,3,4,5} num_2={2,3} print(num_1<=num_2) print(num_1.issubset(num_2)) print(num_2.issubset(num_1)) C:\Python35\python.exe D:/Python代码目录/day3/集合.py False False True Process finished with exit code 0 ###父集:大于等于 num_1={1,2,3,4,5} num_2={2,3} print(num_1>=num_2) print(num_1.issuperset(num_2)) print(num_2.issuperset(num_1)) C:\Python35\python.exe D:/Python代码目录/day3/集合.py True True False Process finished with exit code 0
集合其他内置方法
###更新update s1={1,2,3} s1.update('e') s1.update((1,2,3,4)) s2={'h','e','l'} s1.update('hello') print(s1) C:\Python35\python.exe D:/Python代码目录/day3/集合.py {'h', 1, 2, 3, 4, 'o', 'l', 'e'} Process finished with exit code 0 ###增加add s1={1,2,3} s1.add('hello') print(s1) C:\Python35\python.exe D:/Python代码目录/day3/集合.py {1, 2, 3, 'hello'} Process finished with exit code 0 ###随机删除pop s1={1,2,3} s1.pop() print(s1) C:\Python35\python.exe D:/Python代码目录/day3/集合.py {2, 3} Process finished with exit code 0 ###指定删除(元素不存在则报错) s1={1,2,3} s1.remove('w') C:\Python35\python.exe D:/Python代码目录/day3/集合.py Traceback (most recent call last): File "D:/Python代码目录/day3/集合.py", line 88, in <module> s1.remove('w') KeyError: 'w' Process finished with exit code 1 ###删除元素不存在的集合不报错的删除方式 s1={1,2,3} print(s1.discard('a')) C:\Python35\python.exe D:/Python代码目录/day3/集合.py None Process finished with exit code 0 ###差集更新(s1=s1-s2) s1={1,2,5,'a','c'} s2={1,2} s1.difference_update(s2) print(s1) C:\Python35\python.exe D:/Python代码目录/day3/集合.py {5, 'a', 'c'} Process finished with exit code 0
posted on 2017-01-16 12:20 py_chunwei 阅读(205) 评论(0) 编辑 收藏 举报