經典python代碼
① 6 個值得玩味的 python 代碼
先選取了 6 個自己認為值得玩味的 python代碼,希望對正在學習 python 的你有所幫助。
1、類有兩個方法,一個是 new,一個是 init,有什麼區別,哪個會先執行呢?
運行結果如下:
再來看另一個例子
運行結果如下:
這里給出官方的解釋: init 作用是類實例進行初始化,第一個參數為 self,代表對象本身,可以沒有返回值。 new 則是返回一個新的類的實例,第一個參數是 cls 代表該類本身,必須有返回值。很明顯,類先實例化才能產能對象,顯然是 new 先執行,然後再 init ,實際上,只要 new 返回的是類本身的實例,它會自動調用 init 進行初始化。但是有例外,如果 new 返回的是其他類的實例,則它不會調用當前類的 init 。下面我們分別輸出下對象 a 和對象 b 的類型:
可以看出,a 是 test 類的一個對象,而 b 就是 object 的對象。
2、map 函數返回的對象
map()函數第一個參數是 fun,第二個參數是一般是 list,第三個參數可以寫 list,也可以不寫,作用就是對列表中 list 的每個元素順序調用函數 fun 。
有沒有發現,第二次輸出 b 中的元素時,發現變成空了。原因是 map() 函數返回的是一個迭代器,並用對返回結果使用了 yield,這樣做的目的在於節省內存。 舉個例子:
執行結果為:
這里如果不用 yield,那麼在列表中的元素非常大時,將會全部裝入內存,這是非常浪費內存的,同時也會降低效率。
3、正則表達式中 compile 是否多此一舉?
比如現在有個需求,對於文本 中國 ,用正則匹配出標簽裡面的「中國」,其中 class 的類名是不確定的。有兩種方法,代碼如下:
這里為什麼要用 compile 多寫兩行代碼呢? 原因是 compile 將正則表達式編譯成一個對象,加快速度,並重復使用。
4、[[1,2],[3,4],[5,6]]一行代碼展開該列表,得出[1,2,3,4,5,6]
5、一行代碼將字元串 "->" 插入到 "abcdefg"中每個字元的中間
這里也建議多使用 os.path.join() 來拼接操作系統的文件路徑。
6、zip 函數
zip() 函數在運算時,會以一個或多個序列(可迭代對象)做為參數,返回一個元組的列表。同時將這些序列中並排的元素配對。zip() 參數可以接受任何類型的序列,同時也可以有兩個以上的參數;當傳入參數的長度不同時,zip 能自動以最短序列長度為准進行截取,獲得元組。
② python編程例子有哪些
python編程經典例子:
1、畫愛心表白、圖形都是由一系列的點(X,Y)構成的曲線,由於X,Y滿足一定的關系,所以就可以建立模型,建立表達式expression,當滿足時,兩個for循環(for X in range;for Y in range)就會每行每列的列印。
(2)經典python代碼擴展閱讀:
Python的設計目標之一是讓代碼具備高度的可閱讀性。它設計時盡量使用其它語言經常使用的標點符號和英文單字,讓代碼看起來整潔美觀。它不像其他的靜態語言如C、Pascal那樣需要重復書寫聲明語句,也不像它們的語法那樣經常有特殊情況和意外。
Python開發者有意讓違反了縮進規則的程序不能通過編譯,以此來強製程序員養成良好的編程習慣。並且Python語言利用縮進表示語句塊的開始和退出,而非使用花括弧或者某種關鍵字。增加縮進表示語句塊的開始,而減少縮進則表示語句塊的退出,縮進成為了語法的一部分。
③ Python高難度代碼例子、Python最復雜代碼例子
#IT教育# #IT# #程序員# #人工智慧#
最近學習pytorch,看到下面的Python高難度代碼例子和Python最復雜代碼例子:
from google.colab import output as colab_output
from base64 import b64decode
from io import BytesIO
from pyb import AudioSegment
RECORD = """
const sleep = time => new Promise(resolve => setTimeout(resolve, time))
const b2text = blob => new Promise(resolve => {
const reader = new FileReader()
reader.onloadend = e => resolve(e.srcElement.result)
reader.readAsDataURL(blob)
})
var record = time => new Promise(async resolve => {
stream = await navigator.mediaDevices.getUserMedia({ audio: true })
recorder = new MediaRecorder(stream)
chunks = []
recorder.ondataavailable = e => chunks.push(e.data)
recorder.start()
await sleep(time)
recorder.onstop = async ()=>{
blob = new Blob(chunks)
text = await b2text(blob)
resolve(text)
}
recorder.stop()
})
"""
def record(seconds=1):
display(ipd.javascript(RECORD))
print(f"Recording started for {seconds} seconds.")
s = colab_output.eval_js("record(%d)" % (seconds * 1000))
print("Recording ended.")
b = b64decode(s.split(",")[1])
fileformat = "wav"
filename = f"_audio.{fileformat}"
AudioSegment.from_file(BytesIO(b)).export(filename, format=fileformat)
return torchaudio.load(filename)
waveform, sample_rate = record()
print(f"Predicted: {predict(waveform)}.")
ipd.Audio(waveform.numpy(), rate=sample_rate)
js 的Promise函數對象編程,字元串javascript函數對象,IPython解釋js對象,解釋結果和python代碼結合,IPython Shell顯示非字元串數據,python音頻使用IPython簡單調用。
復雜Python模塊下的多知識點結合代碼,是Python高難度代碼的體現。
Js的Promise理解為動態函數,比C++的類成員函數和全局函數這類靜態形式的函數處理靈活,不過初學者理解起來麻煩。代碼里sleep和b2text都代表一些處理函數,也就是幾行代碼,而不是數據。通常來講,變數一般代表數據,但是這里代表了指令。
④ Python中的9個代碼小實例!
1、串聯比較
2、串聯函數調用
3、復制列表
4、字典獲取元素值
5、 按值排序字典
6、 For Else
7、列表轉換為逗號分隔的字元串
8、合並字典
9、尋找列表中最大和最小元素的索引
若有不明白的地方,請移步Python視頻教程繼續學習!!
⑤ 10個極簡python代碼,拿走即用
Hello,大家好,我是程序汪小成~
雖然python是一個易入門的語言,但是很多人依然還是會問到底怎麼樣學 Python 才最快,答案當然是實戰各種小項目, 只有自己去想與寫,才記得住規則 。本文寫的是 10 個極簡任務,初學者可以嘗試著自己實現;本文同樣也是 10段代碼,Python 開發者也可以看看是不是有沒想到的用法。
以下方法可以檢查給定列表是不是存在重復元素,它會使用 set() 函數來移除所有重復元素。
給定具體的大小,定義一個函數以按照這個大小切割列表。
這個方法可以將布爾型的值去掉,例如(False,None,0,「」),它使用 filter() 函數。
我們常用 For 循環來遍歷某個列表,同樣我們也能枚舉列表的索引與值。
如下代碼段可以將打包好的成對列表解開成兩組不同的元組。
該方法將通過遞歸的方式將列表的嵌套展開為單個列表。
該方法將返回第一個列表的元素,且不在第二個列表內。如果同時要反饋第二個列表獨有的元素,還需要加一句 set_b.difference(set_a)。
如下代碼塊可以用來計算執行特定代碼所花費的時間。
該演算法會打亂列表元素的順序,它主要會通過 Fisher-Yates 演算法對新列表進行排序:
不需要額外的操作就能交換兩個變數的值。
以上,是我簡單列舉的十個python極簡代碼,拿走即用,希望對你有所幫助!
⑥ python有趣的編程代碼
classPoint:
row=0
col=0
def__init__(self,row,col):
self.row=row
self.col=col
def(self):
returnPoint(row=self.row,col=self.col)
#初始框架
importpygame
importrandom
#初始化
pygame.init()
W=800
H=600
ROW=30
COL=40
size=(W,H)
window=pygame.display.set_mode(size)
pygame.display.set_caption('貪吃蛇')
bg_color=(255,255,255)
snake_color=(200,200,200)
head=Point(row=int(ROW/2),col=int(COL/2))
head_color=(0,128,128)
snakes=[
Point(row=head.row,col=head.col+1),
Point(row=head.row,col=head.col+2),
Point(row=head.row,col=head.col+3)
]
#生成食物
defgen_food():
while1:
pos=Point(row=random.randint(0,ROW-1),col=random.randint(0,COL-1))
#
is_coll=False
#是否跟蛇碰上了
ifhead.row==pos.rowandhead.col==pos.col:
is_coll=True
#蛇身子
forsnakeinsnakes:
ifsnake.row==pos.rowandsnake.col==pos.col:
is_coll=True
break
ifnotis_coll:
break
returnpos
#定義坐標
food=gen_food()
food_color=(255,255,0)direct='left'#left,right,up,down
#
defrect(point,color):
cell_width=W/COL
cell_height=H/ROW
left=point.col*cell_width
top=point.row*cell_height
pygame.draw.rect(
window,color,
(left,top,cell_width,cell_height)
)
pass
#游戲循環
quit=True
clock=pygame.time.Clock()
whilequit:
#處理事件
foreventinpygame.event.get():
ifevent.type==pygame.QUIT:
quit=False
elifevent.type==pygame.KEYDOWN:
ifevent.key==273orevent.key==119:
ifdirect=='left'ordirect=='right':
direct='up'
elifevent.key==274orevent.key==115:
ifdirect=='left'ordirect=='right':
direct='down'
elifevent.key==276orevent.key==97:
ifdirect=='up'ordirect=='down':
direct='left'
elifevent.key==275orevent.key==100:
ifdirect=='up'ordirect=='down':
direct='right'
#吃東西
eat=(head.row==food.rowandhead.col==food.col)
#重新產生食物
ifeat:
food=gen_food()
#處理身子
#1.把原來的頭,插入到snakes的頭上
snakes.insert(0,head.())
#2.把snakes的最後一個刪掉
ifnoteat:
snakes.pop()
#移動
ifdirect=='left':
head.col-=1
elifdirect=='right':
head.col+=1
elifdirect=='up':
head.row-=1
elifdirect=='down':
head.row+=1
#檢測
dead=False
#1.撞牆
ifhead.col<0orhead.row<0orhead.col>=COLorhead.row>=ROW:
dead=True
#2.撞自己
forsnakeinsnakes:
ifhead.col==snake.colandhead.row==snake.row:
dead=True
break
ifdead:
print('死了')
quit=False
#渲染——畫出來
#背景
pygame.draw.rect(window,bg_color,(0,0,W,H))
#蛇頭
forsnakeinsnakes:
rect(snake,snake_color)
rect(head,head_color)
rect(food,food_color)
#
pygame.display.flip()
#設置幀頻(速度)
clock.tick(8)
#收尾工作
這是一個簡易版貪吃蛇的代碼,雖然結構簡單,但是該有的功能都是完整的,可玩性也不錯