py_chunwei

导航

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
硬件参数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 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编辑  收藏  举报