.reverse():反轉
reverse():反轉的迭代器,能保留原序列
l = [1,2,3,4,5]
l.reverse()
print(l)
l = [1,2,3,4,5]
l2 = reversed(l)
print(l2)
# 保留原列表,返回乙個反向的迭代器
#輸出:
[5, 4, 3, 2, 1]
slice(,):切片規則
l = (1,2,23,213,5612,342,43)
sli = slice(1,5,2)
print(l[sli])
print(l[1:5:2])
#輸出:
(2, 213)
(2, 213)
format():可進行進製轉換,調整格式
print(format('test', '<20'))
print(format('test', '>40'))
print(format('test', '^40'))
#輸出:
test
test
test
bytes(str,encoding=』』).decode(』』):轉換編碼方式;
我拿到的是gbk編碼的,我想轉成utf-8編碼
print(bytes('你好',encoding='gbk')) # unicode轉換成gbk的bytes
print(bytes('你好',encoding='utf-8')) # unicode轉換成utf-8的bytes
#輸出:
b'\xc4\xe3\xba\xc3'
b'\xe4\xbd\xa0\xe5\xa5\xbd'
b_array = bytearray('你好',encoding='utf-8')#在修改字串時,可節省空間
print(b_array)
print(b_array[0])
'\xe4\xbd\xa0\xe5\xa5\xbd'
s1 = 'alexa'
s2 = 'alexb'
b=memoryview('\xe4\xbd\xa0\xe5\xa5\xbd',encoding='utf-8')
#輸出:
bytearray(b'\xe4\xbd\xa0\xe5\xa5\xbd')
228
切片 —— 位元組型別 不佔記憶體
位元組 —— 字串 佔記憶體
l = 'ahfjskjlyhtgeoahwkvnadlnv'
l2 = l[:10]
編碼相關的函式
print(ord('好'))#檢視字元的編碼
print(ord('1'))
print(chr(97))
#輸出:
22909
49a
print(ascii('好'))#如果是ascii的字元就會原封不動列印,如果不是就會列印『\u……』
print(ascii('1'))
#輸出:
'\u597d'
'1'
\r或者repr:保留字串的單引號
name = 'egg'
print('你好%r'%name)
#輸出:
你好'egg'
print(repr('1'))
print(repr(1))
#輸出:
'1'1
可迭代的函式:all/any
all→如列表中有任何的空,都返回false
any→有乙個true,就返回true
print(all(['a','',123]))
print(all(['a',123]))
print(all([0,123]))
#輸出:
false
true
false
print(any(['',true,0,]))
輸出:true
拉鍊函式:zip→返回乙個迭代器
l = [1,2,3,4,5]
l2 = ['a','b','c','d']
l3 = ('*','**',[1,2])
d =
for i in zip(l,l2,l3,d):#zip(可為任何資料型別,任意長度)
print(i)
#輸出:
(1, 'a', '*', 'k1')
(2, 'b', '**', 'k2')
可迭代函式:filter/map
filter(func,)→把中每個元素傳進func,返回true的值(可用於刪除none/空字串)。執行了filter之後的結果集合<=執行之前的個數,filter只管篩選,不會改變原來的值;
map(func,)→map執行前後元素個數不變,值可能發生改變。
def is_odd(x):
return(x%2==1)
#相當於中的每個元素都傳進函式裡進行判斷,相當於[i for i in [1,3,5,6,7,8] if i%2==1]
for i in filter(is_odd,[1,3,5,6,7,8]):
print(i)
#輸出:13
57from math import sqrt
def find(x):
re=sqrt(x)
return(re%1==0)
#開平方為整數的數,如果是整數,會返回float型別,如4.0,4.0%1=0,1.2%1=0.2
for i in filter(find,list(range(100))):#filter執行之後元素個數發生變化,但不會改變原來的值
print(i)
#輸出:01
491625
3649
6481
def find_num(x):
re=sqrt(x)
if re%1==0:
return(x)
else:
pass
for i in map(find_num,list(range(5))):#map執行前後元素個數不變,值可能發生改變
print(i)
#輸出: 01
none
none
4
排序:sorted/.sort(key=)
sorted→在列表較小時用,因其會產生新的列表,對願列表無影響,但佔記憶體
lst.sort(key=)→改變原列表,在原列表的基礎上進行排序
l = [1,-4,6,5,-10]
l.sort(key = abs) # 在原列表的基礎上進行排序
print(l)→輸出:[1, -4, 5, 6, -10]
print(sorted(l,key=abs,reverse=true)) # 生成了乙個新列表 不改變原列表 佔記憶體
print(l)
#輸出:
[-10, 6, 5, -4, 1]
[1, -4, 5, 6, -10]
l = [' ',[1,2],'hello world']
new_l = sorted(l,key=len)
print(new_l)
#輸出:
[[1, 2], ' ', 'hello world']
應用:客戶輸入乙個頁碼,就輸出該頁所有的內容,每個頁面5行內容
with open('f:/老男孩/分頁讀取資料.txt') as f:
line_lst=f.readlines()
#print(line_lst)
page_num=int(input('請輸入頁碼:'))
pages,mod=divmod(len(line_lst),5)
if mod==0:
pages=pages
else:
pages=pages+1#總頁碼數
index_lst=list(range(0,len(line_lst),5))#分頁的內容index
if page_numprint(line_lst[index_lst[page_num-1]:index_lst[page_num]])
elif page_num==pages:
print(line_lst[index_lst[page_num-1]:])
else:
print('輸入頁碼有誤,或者超出了頁碼範圍!')
Python基礎之內置函式(一)
內建函式比較多,今天只記錄下一部分吧。abs 求絕對值 abs 10.1 10.1 all 全部為真才是真,引數是可迭代的 all 12,3,4,5,none false any 任意為真,就為真 any 12,3,4,5,none true bool 布林值 bool 1 true bool 0 ...
python之內置函式
非空即真,非0即真 記住這句話可以讓你少寫好多 l asdfgwert3r 1 sorted l 排序 字串可以直接使用sorted排序 2 all 如果list裡面都為真的情況返回為 true all 1 2,3 4 print true all 1 2,3 0 print false all 1...
python之內置函式
它將兩個 非複數 數字作為實參,並在執行整數除法時返回一對商和餘數。對於混合運算元型別,適用雙目算術運算子的規則。對於整數,結果和 a b,a b 一致,分別對應取整數和取餘數 對於浮點數,結果是 q,a b q 通常是 math.floor a b 但可能會比 1 小。如 將153拆解 a,b d...