Python—day3
?
1、字符串在C里邊就是字符數(shù)組
Python里邊一切事物都是對象,對象則是類創(chuàng)建的
?2、set集合
set是一個(gè)無序且不能重復(fù)的元素集合
#!/usr/bin/env python
# encoding: utf-8
#set對象不能有重復(fù)
s1 = set()
s1.add('alex')
print(s1)
s1.add('alex')
print(s1)
s1.add('shidong')
print(s1)
s1.clear()
print(s1)
s2 = set(['shi','shidong','sd','shi'])
print(s2)
結(jié)果:
{'alex'}
{'alex'}
{'shidong', 'alex'}
set()
{'shi', 'shidong', 'sd'
?
set中可以有添加列表
s2 = set(['shi','shidong','sd','shi'])
print(s2)
difference函數(shù)生成新的集合
s2 = set(['shi','shidong','sd','shi'])
s3 = s2.difference('shi','shidong')
print(s3)
結(jié)果:
{'sd'}
?
#def:difference_update ,刪除傳入?yún)?shù),并改變原來的set()集合,#但是s2.difference_update 集合并沒有內(nèi)容
s2 = set(['shi','shidong','sd','shi'])
s4 = s2.difference_update(['shidong','sd'])
print(s2)
print(s4)
#discard 移除元素 intersection 取交集,新創(chuàng)建一個(gè)set
#symmetric_difference() 取到兩個(gè)集合的差集,遍歷兩個(gè)集合,把兩個(gè)集合的差集合并成一個(gè)集合
#isdisjoint 如果沒有交集返回True
#issubset 是否是子集
#issuperset 是否是父集
#remove 只移除元素,需要加參數(shù),并且沒有返回值
#pop 移除一個(gè)元素,也可以把移除的元素賦值到新的集合中
s2 = set(['shi','shidong','sd','shi'])
ret = s2.pop()
print(s2)
print(ret)
3、collections系列
?一、計(jì)數(shù)器(counter)
Counter 是對字典類型的補(bǔ)充,用于追蹤值的出現(xiàn)次數(shù)
ps:具備字典的所有功能 + 自己的功能
| 1、c = Counter('abcdfasdfdsfa') |
| 2、print c |
| 3、輸出: Counter({'a':5, 'b':4,'c':3,'d':2,'e':1}) |
Counter方法:查找對象的前幾位:
例如:
#!/usr/bin/env python
# encoding: utf-8
import collections
obj = collections.Counter('shidong')
ret = obj.most_common(4)????? #most_common :顯示對象的前四位
print(ret)
#elements 方法:用來循環(huán)對象中的內(nèi)容
for item in obj.elements():
print(item)
#循環(huán)并取出對象中的健值以及values
for k,v in obj.items():
print((k,v))
obj = collections.Counter(['11','22','22','33'])
print(obj)
obj.update(['eric','11','11'])
print(obj)
#刪除元素substract()
obj.subtract(['eric','11'])
print(obj)
?
二、有序字典(orderedDict)
orderdDict是對字典類型的補(bǔ)充,他記住了字典元素添加的順序
#有序字典OrderedDict()
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k2'] = 'v2'
dic['k3'] = 'v3'
print(dic)
#把某個(gè)鍵跟值拿到最后
dic.move_to_end('k2')
print(dic)
#按照順序拿:拿最后一個(gè)健值,按照后進(jìn)先出執(zhí)行:popitem()
dic.popitem()
print(dic)
#自己指定去拿那個(gè)pop(),而且能夠返回值
dic.pop('k1')
print(dic)
ret = dic.pop('k3')
print(ret)
#setdefault 設(shè)置默認(rèn)值
#update()方法,不存在則增加值,存在則更改值
#字典默認(rèn)輸出的時(shí)候只輸出key
dic.update({'k1':'v111','k2':'v10','k3':'22'})
print(dic)
?
三、默認(rèn)字典(defaultdict)
defaultdict是對字典的類型的補(bǔ)充,他默認(rèn)給字典的值設(shè)置了一個(gè)類型。
?四、隊(duì)列(deque)
#!/usr/bin/env python# encoding: utf-8
#Python提供了兩種隊(duì)列:一種是雙向隊(duì)列一種是單項(xiàng)隊(duì)列(先進(jìn)先出FIFO)
#棧就相當(dāng)于彈匣,后進(jìn)先出
import collections
d = collections.deque()
d.append('1')
#在左側(cè)插入
d.appendleft('10')
d.appendleft('1')
d.appendleft('5')
print(d)
#查看某個(gè)元素的個(gè)數(shù)count方法
print(d.count('1'))
#擴(kuò)展extend(向右側(cè)擴(kuò)展)
d.extend(['yy','uu','ii'])
print(d)
#擴(kuò)展extendleft(像左側(cè)擴(kuò)展)
d.extendleft(['shi','dong'])
print(d)
#刪除某個(gè)值remove
d.remove('shi')
print(d)
#反轉(zhuǎn)reverse
d.reverse()
print(d)
#rotate(英文意思:旋轉(zhuǎn),輪換,使輪流),功能:做到首尾連接
#最后一個(gè)元素能夠連接到第一個(gè)元素,從右邊的數(shù)據(jù)拿到左邊輪
#插入
d.rotate()
print(d)
d.rotate(3)
print(d)
五、拷貝 ——深淺拷貝
數(shù)字、字符串用的是同樣的內(nèi)存地址,復(fù)制操作不會(huì)改變內(nèi)存地址
其余拷貝會(huì)改變內(nèi)存地址,,淺拷貝只拷貝第一次,不會(huì)拷貝多層,
深拷貝會(huì)全部拷貝。
六、單項(xiàng)隊(duì)列(先進(jìn)先出)
#單項(xiàng)隊(duì)列在queue模塊中
import queue
#創(chuàng)建單項(xiàng)隊(duì)列
q = queue.Queue()
#往里邊插入一條數(shù)據(jù)
#qsize()方法:拿到隊(duì)列的個(gè)數(shù)
q.put('shi')
q.put('123')
print(q.qsize())
#從里邊拿數(shù)據(jù)
print(q.get())
七、函數(shù)
在學(xué)習(xí)函數(shù)之前,一直遵循:面向?qū)ο缶幊?#xff0c;即:根據(jù)業(yè)務(wù)邏輯從上到下實(shí)現(xiàn)功能,其往往用一段代碼來實(shí)現(xiàn)指定功能,
開發(fā)過程中最常用的功能就是粘貼復(fù)制,也就是將之前實(shí)現(xiàn)的代碼塊復(fù)制到現(xiàn)需功能處,如下:
while True:
if cpu利用率 > 90%:
#發(fā)送郵件提醒
連接 郵件服務(wù)器
發(fā)送郵件
關(guān)閉連接
if 硬盤使用空間 > 90%
#發(fā)送郵件提醒
連接郵件
關(guān)閉連接
if 內(nèi)存占用 > 80%
#發(fā)送郵件提醒
連接郵件
關(guān)閉連接
定義函數(shù):
def name():
try方法:(首先執(zhí)行try方法中的代碼,如果代碼錯(cuò)誤則執(zhí)行except中的代碼)
try:
...
except Exception:
...
函數(shù)發(fā)送郵件示例:
#!/usr/bin/env python
# encoding: utf-8
#函數(shù):自定義函數(shù) 函數(shù)格式
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
def mail():
ret = 123
try:
msg = MIMEText('收到即為成功','plain','utf-8')
msg['From'] = formataddr(["史冬",'sd880413@sina.cn'])
msg['To'] = formataddr(["sd", '980653381@qq.com'])
msg['Subject'] = "測試函數(shù)郵件"
server = smtplib.SMTP("smtp.sina.cn",25)
server.login("sd880413@sina.cn","shidong00")
server.sendmail('sd880413@sina.cn',['980653381@qq.com',],msg.as_string())
server.quit()
except Exception:
ret = 456
return ret
ret = mail()
if ret:
print("發(fā)送成功!!")
else:
print("發(fā)送失敗!!")
如果一個(gè)函數(shù)中沒有return,那么函數(shù)會(huì)返回None
return放在函數(shù)和方法中,一遇到return值,那么return后的代碼則不會(huì)執(zhí)行:return——1、中斷函數(shù)操作2、返回函數(shù)值 #!/usr/bin/env python
# encoding: utf-8
#無參數(shù)
#show(): -->show()
# 一個(gè)參數(shù)
# def show(arg):
# print(arg)
# show('kkkk')
#兩個(gè)參數(shù)
# def show(arg,xxx):
# print(arg,xxx)
# show('kkkk','777')
#默認(rèn)參數(shù),給形參加上一個(gè)數(shù)值,如果在調(diào)用的時(shí)候不指定參數(shù),那么就會(huì)返回
#形參的指定值,默認(rèn)參數(shù)必須放在最后。
# def show(a1,a2=888):
# print(a1,a2)
# show(33)
# show(22,44)
#指定參數(shù):
# def show(a1,a2):
# print(a1,a2)
# show(a2=23,a1=111)
#動(dòng)態(tài)參數(shù):參數(shù)也可以是列表,一顆星代表把所有的參數(shù)自動(dòng)轉(zhuǎn)換成一個(gè)元組
#兩個(gè)星代表把傳入的所有參數(shù)全都轉(zhuǎn)換成一個(gè)字典
#一顆星:
# def show(*arg):
# print(arg,type(arg))
# show(1,2,3,3,4,5,7,)
#兩顆星
# def show(**arg):
# print(arg,type(arg))
# show(a1=88,uu=213)
#一星、兩星共用
def show(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))
show(1,2,3,3,2,111,n=2,a=5)
結(jié)果:
(1, 2, 3, 3, 2, 111) <class 'tuple'>
{'a': 5, 'n': 2} <class 'dict'>
示例:
#一星、兩星共用
def show(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))
#show(1,2,3,3,2,111,n=2,a=5)
l = [11,22,33,44]
d = {'n1':88,'alex':'sb'}
#如果直接添加參數(shù),那么可能會(huì)被系統(tǒng)默認(rèn)為是元組或者列表,
#字典也會(huì)加入到一星的動(dòng)態(tài)參數(shù)中,如果想要對應(yīng)加入,如:字典要
#放到兩星參數(shù)中,則采用如下方法
show(*l,**d)
結(jié)果:
(11, 22, 33, 44) <class 'tuple'>
{'n1': 88, 'alex': 'sb'} <class 'dict'>
?使用動(dòng)態(tài)參數(shù)實(shí)現(xiàn)字符串格式化:
#字符串格式化,并傳入動(dòng)態(tài)參數(shù)
s1 = "{0} is the best {1}"
resul = s1.format('shidong','man')
print(resul)
結(jié)果:
shidong is the best man
或者 如: #字符串格式化,并傳入動(dòng)態(tài)參數(shù)
s1 = "{0} is the best {1}"
l1 = ['shidong','winner']
#resul = s1.format('shidong','man')
resul = s1.format(*l1)
print(resul)
結(jié)果:
shidong is the best winner
或者 如:
s1 = "{name} is {acter}"
result = s1.format(name = 'shidong',acter = 'successful')
print(result)
結(jié)果:
shidong is successful
如果是參數(shù)是字典,需要加兩星
s1 = "{name} is {acter}"
d = {'name':'shidong','acter':'successful'}
result = s1.format(**d)
print(result)
結(jié)果:
shidong is successful
八、lambda表達(dá)式:簡單函數(shù)的簡單表示
例如:
lambda表達(dá)式:
func = lambda a :a + 1
#創(chuàng)建形式參數(shù)a
#函數(shù)內(nèi)容,a + 1 并把結(jié)果return
ret = func(98)
print(ret)
結(jié)果:
99
九、內(nèi)置函數(shù)
這些內(nèi)置函數(shù)不需要導(dǎo)入任何模塊就能使用。
abs():絕對值:a = -1
ret = abs(a)
print(ret)
all():判斷元素,如果所有都為真才為真,如果為空或者None也為假
查看真假用bool
例如:
any():只要里邊有真的就為真
ascii() :可以得到一個(gè)返回值
?ascii(8) 相當(dāng)于int.__repr__()
bin():表示二進(jìn)制
>>>bin(10)
‘0b1010’
bool():布爾
bytearray():把傳入的字符串、列表轉(zhuǎn)換成字節(jié)數(shù)組
一個(gè)漢字需要占用3個(gè)字節(jié)
ret = bytearray('史冬',encoding='utf-8')print(ret)
結(jié)果:bytearray(b'\xe5\x8f\xb2\xe5\x86\xac')
?callable():函數(shù) 查看函數(shù)兒能否被調(diào)用,是否可執(zhí)行
例如:
func = lambda a : a + 1print(func(2))
print(callable(func))
結(jié)果:
3
True
chr() 和ord() 兩個(gè)要經(jīng)常一起用,一個(gè)是把數(shù)字轉(zhuǎn)換成ASCII碼,一個(gè)是把ASCII轉(zhuǎn)換成數(shù)字 chr():把數(shù)字轉(zhuǎn)換成字符,ord()把字符轉(zhuǎn)換成數(shù)字
import random
a = random.randint(97,120)
b = chr(a)
print(a,b)
compile():編譯用到的
enumerate():函數(shù)會(huì)添加一個(gè)序列用來記錄序列,例如:
li = ["alex","shidong","xian"]for i,item in enumerate(li,1):
print(i,item)
結(jié)果:
1 alex
2 shidong
3 xian
eval()函數(shù):可以用于計(jì)算Excel表格中的運(yùn)算,例如:
a = eval('6*8')
print(a)
結(jié)果:
48
map:
map示例:map左邊有多少然后經(jīng)過條件后,右邊相對應(yīng)的過濾出來,例如:
li = [11,22,33,44,]new_li = map(lambda x : x + 100,li)
l = list(new_li)
print(l)
結(jié)果:
[111, 122, 133, 144]
filter()函數(shù):起到過濾作用
def func(x):
if x > 33:
return True
else:
return False
li = [11,22,33,44,]
ret = filter(func,li)
print(list(ret))
float()函數(shù):把一個(gè)數(shù)轉(zhuǎn)換成float類型
frozenset()函數(shù):凍結(jié)集合
globals()函數(shù):當(dāng)前的全局變量
oct()函數(shù):八進(jìn)制
hex()函數(shù):十六進(jìn)制
例如:
hex(10)
結(jié)果:0xa
locals()函數(shù):局部變量
max()函數(shù):拿到最大值
例如:
print(max(11,22,3,34,534456345,))
結(jié)果:534456345
open()函數(shù):打開文件
range()函數(shù):拿到區(qū)間值
round()函數(shù):四舍五入
zip()函數(shù):兩個(gè)對象的元素對應(yīng)起來
例如: x = [1,2,3,4,]
y = [2,3,4,5,]
ziped = zip(x,y)
wo = list(ziped)
print(wo)
結(jié)果:
[(1, 2), (2, 3), (3, 4), (4, 5)]
?
read():可以讀取幾個(gè)字節(jié),例如: #!/usr/bin/env python# encoding: utf-8
f = open('test.log','r',encoding='utf-8')
#f.write('hello world!!!')
ret = f.read(2)
print(ret)
f.close() readable():是否可讀
readline():僅讀取一行
seek():指定文件中指針位置
seekable():指針是否可操作
tell():獲取指針位置 ()指的是字節(jié))
例如:
#!/usr/bin/env python
# encoding: utf-8
f = open('test.log','r',encoding='utf-8')
#print(f.tell())
#ret = f.read(2)#按照字符來拿
#print(f.tell())#tell按照字節(jié)執(zhí)行
f.seek(1)#讓指針跳到哪兒
ret = f.read()#不加參數(shù)全部讀出來,加參數(shù)指定讀取字符
#print(f.tell())
f.close()
print(ret)
truncate()函數(shù):讀取指針前面的數(shù),刪除指針后面的數(shù),然后保存源文件
?
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/sd880413/p/7521213.html
總結(jié)
以上是生活随笔為你收集整理的Python—day3的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php数据库备份脚本
- 下一篇: Python 字典 values() 方