日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【笔记】Python算法教程(1)

發布時間:2023/12/10 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【笔记】Python算法教程(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、關于list

Python里的list不是單(雙)向鏈表,是順序表,是一整塊單一連續的內存區塊----我們通常稱之為數組(array)。這樣做的好處有兩點:這樣按照既定索引值對某元素進行直接訪問時更方便;append是在列表末尾添加,insert必須移動插入點右邊所有的數據,故方便用append。

2、關于復雜度

任何多項式級算法的復雜度都要高于對數級;任何指數級算法的復雜度都要高于多項式級算法。

3、range 函數

>>> range(1,5) #代表從1到5(不包含5) [1, 2, 3, 4] >>> range(1,5,2) #代表從1到5,間隔2(不包含5) [1, 3] >>> range(5) #代表從0到5(不包含5) [0, 1, 2, 3, 4]
4、運行時間既與輸入規模有關,又與輸入的實際內容有關。

5、使用timeit模塊來計時。

import timeit timeit.timeit("x=2+2")6、通過profiler來運行程序:

import cProfile cProfile.run('main()')
這樣就應該能打印出程序中各函數的計時結果。

7、可通過trace模塊來完成這部分測試

8、圖G=(V,E)。V是節點,E是邊。

9、散列hashing,會涉及一些經由某既定對象計算而來的整數值。(而且乍看之下像是隨機的)

假設你有這樣一個函數: ?

hash(name)?


該函數根據輸入的名字,通過一些計算法則返回區間[1,N]中的某個數值,那么為什么不將名字和電話號碼存儲在表的第 hash(name)位置呢。?


注意哈希函數有點小奇特,它必須是完全確定性的。按理說就是對于你輸入的同一名字,哈希函數始終返回相同的數值,而每個不同的名字則應返回不同的固定值。正如你所料這種特性并不總是能滿足的。?


使用這種方案,在表中查找名字,實際僅就是計算 hash(name)的值,然后在這個值標識的 表中的那個位置 去看看你要查的名字是不是存儲在那了。?


是的,這就是關于hash的全部,盡管還有一些其他的實用細節,但其核心思想就是 用 hash(name)來確定名字在表中的存儲地址。

10、表示圖的結構方法:

鄰接集( ?{ } ?)、鄰接列表(list[])、鄰接矩陣(檢查矩陣單元N[a][b]是否為真)表示法。N(v)代表的是v的鄰居節點集。

較為稀疏的時候比較適合鄰接列表,較為稠密的時候比較適合鄰接集。

11、集合set。python的set和其他語言類似, 是一個無序不重復元素集, 基本功能包括關系測試和消除重復元素. 集合對象還支持union(聯合), intersection(交), difference(差)和sysmmetric difference(對稱差集)等數學運算. ? ? ?sets 支持 x in set, len(set),和 for x in set。作為一個無序的集合,sets不記錄元素位置或者插入點。因此,sets不支持 indexing, slicing, 或其它類序列(sequence-like)的操作。

12、可以直接利用類似直覺,將其各個子樹組織成一個子樹列表。

總結

以上是生活随笔為你收集整理的【笔记】Python算法教程(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。