筆記 python基礎之內置函式2

2021-09-07 19:19:17 字數 4461 閱讀 6601

.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...