老九 Python 列表及常用操作及演算法實現

2021-10-10 05:13:17 字數 3146 閱讀 6478

列表可以儲存任意大小的資料集合

列表是python中的一種資料型別

列表中既可以包含同型別元素,也可以包含不同的型別元素(推薦使用同型別)

使用list類定義的序列,包括了建立、操作和處理列表的方法

下表中的list4不能成功,使用range的話必須使用推導式來生成才行

推導式:my_list7 = [i for i in range(10)]

my_list8 = [num for num in range(100) if num % 2 == 0]  #0到100的偶數

訪問列表當中的某個元素使用list[index]的方法,list為列表物件。index表示下標,從0

開始,到len(list)-1(len函式可以求出列表的長度)。下標可以為負數,實際上返回

的是倒數的第幾個元素。

訪問列表當中的某個區間片段(切片)使用list[index1:index2]方法,前開後閉原則。取

列表切片時,只能往後面走(start->end),否則返回空列表;如果end大於列表的最大下標,那麼end預設為列表的最大下標切片可以取負值。

in 可以判斷某個元素是否在列表中(not in 表示不在的意思),返回值為布林值

多個列表的相加實際上就是返回連線的多個列表,list1+list2+list3

列表乘以整數時,返回n個列表的連線

列表不支援減法

在列表中的比較,首先比較前兩個元素,如果不同就決定了比較結果,如果相同,就繼

續比較接下來的兩個元素,重複這個順序。如果比較的是字串,則比較的是ascii

碼,』a』-65 『a』-97 大小寫之間相差乙個32(空格-32)

上表中:後面的型別表示該方法執行後的返回型別

insert(index,elem),如果index越界了預設在最後乙個位置進行插入

pop(index),如果index越界了,程式會報錯

remove(elem),如果刪除的元素不存在,程式會報錯

random模組

random.shuffle(list)   將list列表中的元素亂序

str.split(str1)  str表示string物件,str1表示分割符,將str按照str1分割符進行分割,返回值為列表

線性查詢(列表較大時,效率比較低下)

二分查詢法(前提:列表已經按照公升序進行排序了)

基本原理:首先將要查詢的元素(key)與列表的中間元素比較

如果key小於中間元素,只需要在列表的前一半元素中繼續查詢,將最大邊界的下標設定為中間下標-1

如果key和中間元素相等,匹配成功,查詢結束

如果key大於中間元素,只需要在列表的後一半元素中繼續查詢,將最小邊界的下標設定為中間下標+1

上表中的lst是乙個已經排好序的列表

需要設定三個下標值,中間下標、最大邊界下標、最小邊界下標。

中間下標 = (最大邊界下標+最小邊界下標)// 2

迴圈條件為:最小邊界下標 >= 最大邊界下標

氣泡排序(使用雙重for迴圈)

原理:外層迴圈控制比較的輪數,內層迴圈則是控制本輪比較,將列表中

的最大值或者最小值換位到列表的最後端。然後進行下一輪的排序比較

因為最大值或者最小值已經放到最後端,所以本輪可以比上輪少比較一次。

注意:比較的輪數等於列表元素的個數-1

本輪比較的次數會比上一輪比較的次數少1次

在比較中將最大值或最小值往列表的後端移

為了節省效率,如果在內迴圈中沒有發生交換,說明排序已經完成,那麼直接調

跳出排序迴圈。

選擇排序(和氣泡排序很像,使用雙重for迴圈)

原理:1、首先在每輪中找到列表中的最小元素並將它和第乙個元素交換

2、找到本輪剩餘元素中的值最小的元素病和剩餘列表中的第乙個元素交換

3、以此類推,直到只剩下乙個元素

設定最小值的下標,預設為本輪的第乙個元素(min_index=i)。

使用內迴圈,找到真實的最小值下標,然後將真實的最小值和第乙個值交換           

插入排序:(將乙個新元素重複插入到乙個已排序的子列表中,將插入元素的前面的所有元素看成是乙個子列表。)

while條件中的lst[j] > temp 表示公升序;list[j] < temp 則為降序

二維列表(列表中的元素也是乙個列表)

lst = [,,]

元組和列表的操作非常相似,最大的區別是,列表中可以無限新增元素;元組中的元素一旦確定,就不能刪除或新增了

補充:中文字串按拼音排序

第二步pinyin.get_pinyin(name)   根據name中文獲取相應的拼音

將獲取到的中文拼音和中文儲存在乙個列表中,將這個列表作為拼音

結果列表的乙個元素。

然後新增到拼音的結果列表中,新增完成後使用sort排序。

第三步取出中文的時候要注意,拼音的結果列表中的元素是中文拼音和中文的

列表,所以取的時候使用了2個。第1個代表取拼音結果列表的

第幾個元素,第2個表示取中文拼音和中文組成的列表的第幾個

元素。(二位列表)

老九 Python 物件和類

oop object oriented programming 物件導向程式設計 oop的優點 達到的了軟體工程的三個主要目標 重用性 靈活性 擴充套件性 使用物件導向思想描述現實世界 基本步驟 資料抽象 是狀態和行為的結合 發現類找出特徵 名詞 屬性 找出行為 動詞 函式 定義類 類是模板是物件的...

老九學堂 C語言 常用演算法

相信小夥伴們都應該知道,c語言中有有許多經典的演算法,這些演算法都是許多人的智慧型結晶,也是程式設計中常用的演算法,這裡面包含了眾多演算法思想,掌握這些演算法,對於學習更高階的 更難的演算法都會有很大幫助,所以老九君今天就為大家扒一扒c語言中的一些常用演算法。1.從鍵盤輸入乙個字串,將其中的大寫字母...

Python列表常用操作

python的列表非常好用,一些常用的操作寫在這裡。在python中建立乙個列表時,直譯器會在記憶體中建立乙個類似陣列 但不是陣列 的資料結構來儲存資料。列表中的編號從 0 開始,然後是1,依此類推。print 顯示列表 len 得出列表中有多少資料項 extend 在列表末尾增加乙個資料項集合 p...