python一些常用的內建函式及作用請見以下**:
lis=[1,4,3,8,2,9,10,0]print(all(lis))#
判斷可迭代物件裡頭是否存在不為真的元素,如果存在不為真的元素則返回false,否則true
print(any(lis))#
判斷可迭代物件裡頭是否存在為真的元素,如果存在為真的元素則返回true,否則false
print(bin(10).replace('
0b',''))#
10進製轉換為二進位制
print(bool({}))#
把乙個物件轉換成布林型別,非空即真,非0即真
from hashlib import
md5m=md5()
print(dir(m))#
dir列出m的方法
eval('
print("haha")')
exec('
print("haha")')
b=exec('
[1,2,3]
')#exec執行**時,不返回值,這裡b是none 可以執行多行**,且無返回值
c=eval('
[1,2,3]
')#eval執行**時,返回值,多用於表示式,這裡賦值成功 只可以執行一行**,有返回值
print(b)#
會輸出none
print(c)#
會輸出[1,2,3]
exec("
def hs():print(123)
")#可執行複雜**,這裡正常余興
eval("
def hs():print(123)
")#不可以執行複雜**,會報錯
print(round(66.66666,3))#
round(float,int)保留float小數的int位
print(sum([1,6,9]))#
求和print(min([1,6,9]))#
取最小值
print(max([1,6,9]))#
取最大值
print(hex(34523).replace('
0x',''))#
10進製轉16進製制
print(hash('
asd'))#
將乙個字串hash成數字
print(globals())#
返回程式內所有的變數,返回的是乙個字典
print(locals())#
返回區域性變數
1.eval和exec的區別:
最大的乙個區別是eval會返回**執行的值,類似於函式自帶了乙個return功能,但是exec不會,它只管執行**,等於是函式沒有return值,預設返回了none;還有乙個區別是exec可以執行複雜的**,類似於命名函式,定義物件等,但eval不行,eval只能執行單行**。
2.enumerate:
將索引和元素一起輸出,可用於一些和使用者互動的地方,或者用於格式列印輸出到控制台。
lis = ["a","
b","c"
]for index,value in
enumerate(lis):
(index,value)
0 a1b
2 c
3.filter和map的區別
map這個函式會改變原來的list的元素,這裡只的改變有:修改、刪除,而filter這個函式只能刪除、不能修改元素,還有一點需要注意,這兩個函式執行後都是可迭代物件,需要用lsit強制轉換才可以得到list資料:
lis=['123',456,,0,,(1,2,3),(),{},'
false']
defmy_char(var):
return
varres=filter(my_char,lis)#
filter(fun,list),list只要是可迭代型別即可,迴圈list裡的值,呼叫fun函式,當fun函式返回為真時,保留list的元素,否則,刪掉
print(list(res))#
res得到的是乙個物件,需要list方法接收值
defmaps(var):
return str(var)+'
值都變咯
'res1=map(maps,lis)#
map(fun,list),list只要是可迭代型別即可,迴圈list裡的值,呼叫fun函式,fun函式返回值作為新值儲存到rese1物件裡
print(list(res1))
4.sort內建函式詳解
題:給定乙個字串,找出包含數字和字母的最長字段,並輸出該欄位及其長度,如:abc123!#abc*^123%$xyz789!~12as@!~1a,那麼最長的字段就是:abc123和xyz789,長度為6。
解題思路:
1.找出檔案中的特殊字元 -> 2.將特殊文字都替換成同乙個字元,比如',' -> 3.將字串按該文字分割成乙個陣列 -> 4.找出列表中既包含數字又包含字母最長的字元 -> 5.輸出列印
分割字串有兩種方式,我們先按剛才的解題思路來做一下,找最長字串方法為設計兩個list,乙個存字串,乙個存其長度,求出最長長度,迴圈列印字元,條件為字元長度等於最長長度,**如下:
importstring
str='
#g5$@sdfg45$%dgf&sdfg46&hs[,.564~kj!k23h~jk!nj1
't=string.punctuation
for i in
t: str=str.replace(i,','
)lis=str.split(','
)new_lis=
lens=
for i in
lis:
ifnot i.isdigit() and
not i.isalpha() and len(i)!=0:
for i in
new_lis:
lens.sort()
if len(i)==lens[-1]:
print('
符合題意的字段有:%s,長度為:%s
'%(i,len(i)))
下面對其進行優化兩點:1.字串切割用正則 2.找最長字元的方式
這裡需要介紹下sort、sorted函式:
python3 sorted取消了對cmp的支援,格式:sorted(iterable,key=none,reverse=false),key接受乙個函式,這個函式只接受乙個元素,預設為none;reverse是乙個布林值。如果設定為true,列表元素將被倒序排列,預設為false。
key的作用原理:key指定乙個接收乙個引數的函式,這個函式用於從每個元素中提取乙個用於比較的關鍵字。預設值為none ,下面看幾個例題:
#1.按照年齡來排序
students = [('
牛牛', '
a', 15), ('
道長', '
b', 12), ('
大師兄','
b', 10)]
students=sorted(students,key=lambda s:s[2])
(students)
#結果:[('大師兄', 'b', 10), ('道長', 'b', 12), ('牛牛', 'a', 15)]
#2.乙個字串排序,排序規則:小寫《大寫《奇數《偶數,
#原理:先比較元組的第乙個值,false#
先看一下boolean value 的排序:
#print(sorted([true,flase]))===>結果[false,true]
#boolean 的排序會將 false 排在前,true排在後 .
s='9a13c85c7b24a6b'#
正確的順序應該為:abcabc135792468
lis=sorted(s,key=lambda x:(x.isdigit(),x.isdigit() and int(x)%2==0,x.isalpha() and x.isupper(),x.isalpha() and
x.lower()))
print(''
.join(lis))
#1.x.isdigit()的作用是把數字放在前邊,字母放在後邊.
#2.x.isdigit() and int(x) % 2 == 0的作用是保證奇數在前,偶數在後。
#3.x.isupper()的作用是在前面基礎上,保證字母小寫在前大寫在後.
#4.最後的x表示在前面基礎上,對所有類別數字或字母排序。
根據上面的sort函式的排序原理,優化**如下:
importstring,re
str='
#sdfg45$@sdfg45$%dgf&sdfg46&hs[,.564~kj!k122h~j`k!n1j
'lis=re.split(r'\w'
,str)
dic={}
for i in
lis:
ifnot i.isdigit() and
not i.isalpha() and len(i) !=0:
dic[i]=len(i)
new_lis=sorted(dic,key=lambda s:s[1],reverse=true)
(new_lis)
for i in
new_lis:
if len(i)==len(new_lis[0]):
print('
最長的字串有:%s
'%i)
Python3 從零單排18 封裝
隱藏屬性 申明類時,資料屬性或者函式屬性,在屬性名稱前加上兩個下劃線,就實現了屬性隱藏,但在python裡不存在絕對的隱藏,它只是在申明的時候定義了它的呼叫方式。class a country china def def self print self.country a a print a.cou...
python3 從零單排3 函式 購買商品小程式
題目如下 商品檔案products.txt裡存的內容如下 使用者檔案user.txt裡存的內容如下 xg 管理員可以操作 1.給使用者充值,輸入使用者名稱,修改money,100000 2.新增商品 3.logout 普通使用者可以操作 1.看商品資訊 2.買東西,a.東西加products,mon...
Python3 從零單排19 組合 多型
組合 物件1的屬性是物件2,物件1就擁有了物件2的資料和函式屬性,這就是組合。a型別和b型別沒有共性,不可以繼承,但是a有b的特性,比如a是人,b是家,a和b沒有繼承關係,但是人有家,a有b的關係,那麼就可以把b的屬性都給a用 class people def init self,name,age ...