Python數(shù)據(jù)結(jié)構(gòu)列表
正則小練習:匹配出以下字符串所有url,
import re def find_url(sentence, show_urls=None, delete_urls=None): r = re.compile( r'(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>???“”‘']))') url_list = r.findall(sentence) if show_urls == 1: for i in url_list: print(i[0]) if delete_urls == 1: for j in url_list: # sentence = sentence.replace(j[0], '<URL>') sentence = sentence.replace(j[0], '') return sentence return "匹配完成" if __name__ == '__main__': str1 = '你好哇 大佬 www.google.com' str2 = '哇 www.baidu.com 打不開了' str3 = 'python網(wǎng)址在哪兒 https://www.python.com 找到了'
對于字符串的基礎(chǔ)使用基本已經(jīng)闡述完畢!需要復雜使用的還需項目實戰(zhàn)以及向大佬們請教。后面的幾篇文章還是想闡述關(guān)于數(shù)據(jù)結(jié)構(gòu)的一些基礎(chǔ)使用。字符串可以看作為只存儲字符序列的數(shù)據(jù)結(jié)構(gòu),同樣為了方便眾多使用者的理念,Python提供了幾個功能強大且高效的數(shù)據(jù)結(jié)構(gòu):列表、元組、字典以及集合。作為使用者的我們只需要組合使用即可。
在開始數(shù)據(jù)結(jié)構(gòu)使用前,需要介紹一個Python的另一個內(nèi)置函數(shù):type(),該函數(shù)在我們需要了解值或變量的數(shù)據(jù)類型時極為方便。如下:type輸出結(jié)果中包含class 類,可以返回特定值和變量或者是否為模塊函數(shù)。在代碼調(diào)試過程中,該函數(shù)會起到很大的作用,例如在使用數(shù)據(jù)集合但并不知集合內(nèi)部的數(shù)據(jù)類型時,可以使用type準確的返回對象類型。
1 序列
在Python中,序列是一組按順序排列的值。Python 有 3 種內(nèi)置的序列類型:字符串、 元組和列表。
序列支持切片、索引,同時具備以下特征:
- 1 第一個正索引為零,指向左端;
- 2 第一個負索引為 -1,指向右端;
- 3 可使用切片表示法來復制子序列;
- 4 可使用 + 和 * 進行拼接;
- 5 可使用函數(shù) len 計算其長度,例如,
len(string)
返回序列 string 包含的元素數(shù); - 6 表達式 x in string 檢查序列
string
是否包含元素 x 。
2 列表
在Python中,列表的元素不是固定不變的,而是可變的,也就是表示可在不復制的情況下,添加、刪除或修改列表元素。列表使用方括號將元素括起來,里面的元素使用逗號分開,舉幾個簡單示例:隨便定義一個num
列表,可以使用+和*拼接列表,也可以使用len()
獲取列表長度,并且,同樣可以使用切片和索引方式來獲取列表中的子列表。
需要注意的是:列表可包含任何類型的值:數(shù)字、字符串甚至其他序列。空列表用 [] 表示,而只包含一個元素(x)的單元素列表寫做 [x] 。其訪問方式與字符串的索引方式一樣,以num2為例,如下圖:列表索引從 0 開始,第二個索引是 1,依此類推。當然也可以從右向左進行索引。
2.1 列表函數(shù)
Python針對列表也提供了十分強大的函數(shù),整理如下表所示:除count
返回值只返回一個數(shù)字之外,其他所有函數(shù)都涉及到修改傳遞給它們的列表。使用時一定小心,不然會誤刪列表中的元素或者在錯誤的位置插入元素。
以函數(shù)append
為例,在列表num
末尾添加一個元素,簡單的一種編程模式,在函數(shù)開頭創(chuàng)建一個空列表,然后再列表中添加元素,
如下:判斷一個列表中的數(shù)據(jù)是正數(shù)還是負數(shù)。
def list_num(list): msg = [] for num in list: if num < 0: s = str(num) + ' 是負數(shù)' elif 0 <= num <= 9: s = str(num) + ' 是正數(shù)' msg.append(s) return msg if __name__ == '__main__': print(list_num([3,-10.7,22,-99,1]))
其它相關(guān)函數(shù)的使用就不一一舉例了,有興趣的可以自己體驗一下。
2.2 列表排序
對數(shù)據(jù)進行排序是計算機最常做的事情 之一。無論是對人還是計算機來說,排序后 的數(shù)據(jù)通常比未排序的數(shù)據(jù)更容易處理。例如,在列表中查找最小的元素時,如果列表經(jīng)過了排序,就根本不需要查找:第一個元素就是,人們的習慣就是喜歡排列有序的數(shù)據(jù)(特例除外哈)。
在 Python 中,要對列表進行排序,最簡 單的方式是使用函數(shù) sort()
。實際上,這個函數(shù)可用于對包含數(shù)萬個元素的列表進行快速排序,同時可以修改列表。
如下:sort總是按照從小到大的順序排序,若需要相反的順序排列元素,先調(diào)用sort方法之后在使用reverse
方法。
2.3 解析列表
在實際Python
使用中,會有很多地方使用到列表,所以Python
提供了一種用于創(chuàng)建列表的特殊表示法—列表解析。下面舉例如何使用列表解析來創(chuàng)建 一個由 1~10
的平方組成的列表: 這種表示法的主要優(yōu)點是簡潔易讀。for
循環(huán)代碼沒有使用列表解析,使用越多就越會發(fā)現(xiàn),列表解析方法編寫容易并且簡潔。
list = [] num = [-1, 0, 6, -4, -2, 3, 8, -12] for n in num: if n > 0: list.append(n)
對比使用常規(guī)循環(huán),可以體現(xiàn)出列表解析更加簡潔易讀!其它還可以實現(xiàn)諸如刪除特定字符串的功能,有興趣的朋友們可以實現(xiàn)一下刪除特定字符串的列表解析,十分簡單。
到此這篇關(guān)于Python
數(shù)據(jù)結(jié)構(gòu)列表的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)結(jié)構(gòu)列表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python爬取網(wǎng)頁數(shù)據(jù)到保存到csv
大家好,本篇文章主要講的是python爬取網(wǎng)頁數(shù)據(jù)到保存到csv,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01Python實現(xiàn)的用戶登錄系統(tǒng)功能示例
這篇文章主要介紹了Python實現(xiàn)的用戶登錄系統(tǒng)功能,涉及Python流程控制及字符串判斷等相關(guān)操作技巧,需要的朋友可以參考下2018-02-02Django Path轉(zhuǎn)換器自定義及正則代碼實例
這篇文章主要介紹了Django Path轉(zhuǎn)換器自定義及正則代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-05-05