元组(tuple)
元组其实跟列表差不多,也是存一组数,与列表相比,元组一旦创建,便不能再修改,所以又叫只读列表。
语法:
names = ("Wuchunwei","Yangmengmeng","Lvs") #元组只有2个方法,一个是count,一个是index
>>> tuple1 = (,,'',,'')
>>> print (tuple1[]) >>> print (tuple1[-]) >>> print (tuple1[:]) #元组也可以进行切片操作。对元组切片可以得到新的元组。
(, '')
>>>
枚举
>>> for i,v in enumerate(range(,)):
... print(i,v)
... >>>
应用举例:
#代码
product_list = [
['IPhone',],
['ofo',],
['MackBook',], ] for index,i in enumerate(product_list):
print("%s,\t%s\t%s" %(index,i[],i[])) #运行结果
C:\Python35\python.exe D:/Python代码目录/day2/list.py
, IPhone
, ofo
, MackBook Process finished with exit code
字符串操作(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
>>> >>> "".isdigit() #是不是正整数,是返回True,否返回False
True
>>> "".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
>>> "".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("")
('hello world ', '', ' 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',) #分别以a、b、c为key,1为value为键值创建字典(去重)
print("dict1===>",dic1)
dic2=dic1.fromkeys('hello',)
print("dict2===>",dic2)
dic3=dict.fromkeys([,,],{'names':'weige','age':})
print("dict3===>",dic3) ###运行结果:
C:\Python35\python.exe D:/Python代码目录/day3/字典.py
dict1===> {'a': , 'b': , 'c': }
dict2===> {'l': , 'o': , 'e': , 'h': }
dict3===> {: {'age': , 'names': 'weige'}, : {'age': , 'names': 'weige'}, : {'age': , 'names': 'weige'}} Process finished with exit code
字典的常见操作:
===》增加
>>> 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':,'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': }
{'gfs': ['MwngQi', 'Roses', 'Helly'], 'name': 'weige', 'age': }
{'gfs': ['MwngQi', 'Roses', 'Helly'], 'name': 'weige', 'age': } Process finished with exit code
###代码###
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
硬件参数copy与deepcopy事例
集合(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 ###并集:取包含两个集合所有的元素
num_1={,,,,}
num_2={,}
##并集:取包含所有的
print(num_1|num_2)
print(num_1.union(num_2)) C:\Python35\python.exe D:/Python代码目录/day3/集合.py
{, , , , }
{, , , , } Process finished with exit code ###差集:用集合1中减去集合2中有的,剩余的就为集合1与集合2的差集
num_1={,,,,}
num_2={,}
print(num_1-num_2)
print(num_1.difference(num_2))
print(num_2-num_1) #没有这为空 C:\Python35\python.exe D:/Python代码目录/day3/集合.py
{, , }
{, , }
set() Process finished with exit code ###对称差集:集合1与集合2所有的减去两者共有的剩下所有
num_1={,,,,}
num_2={,}
print(num_1^num_2)
print(num_1.symmetric_difference(num_2)) C:\Python35\python.exe D:/Python代码目录/day3/集合.py
{, , }
{, , } Process finished with exit code ###子集:小于等于,返回布尔值;True和False
num_1={,,,,}
num_2={,}
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 ###父集:大于等于
num_1={,,,,}
num_2={,}
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
集合其他内置方法
###更新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