首頁 > 後端開發 > Python教學 > 寫給Python程式設計高手之 資料結構

寫給Python程式設計高手之 資料結構

coldplay.xixi
發布: 2020-11-04 17:13:54
轉載
1772 人瀏覽過

python影片教學欄位介紹Python程式設計需要注意的關鍵點。

寫給Python程式設計高手之 資料結構

如何在列表,字典,集合中根據條件篩選資料

案例:如何在下列列表data中篩選出大於0的數

data = [1, -1, 2, 3, 4, 7]复制代码
登入後複製

使用filter函數,第一個參數為一個函數,也可以像以下程式碼傳入一個lambda表達式。

list(filter(lambda x: x >= 0, data))复制代码
登入後複製

另一種方案是像如下使用列表生成式,這種方案相對於上一種方案更有效率。

print([x for x in data if x >= 0])复制代码
登入後複製

在字典這個資料結構中,也可以使用類似的字典生產式。

from random import randint
d = { x: randint(60, 100) for x in range(1, 21)}
{k:v for k, v in d.items() if v >= 90}复制代码
登入後複製

如何為元組中的每個元素命名,提高程式可讀性

方案:定義常數,使用常數索引元組中的元素,例如下列程式碼

stu = ('hao', 18, 'male', '1078244513@qq.com')
NAME = 0AGE = 1SEX = 2print(stu[SEX])复制代码
登入後複製

方案:使用collections包的namedtuple的函數,該函數會傳回一個新"類別"的定義,使用方式如下。

from  collections import  namedtuple
Stu = namedtuple('Stu', ['name', 'age', 'sex', 'email'])# stu = Stu('hao', 18, 'male', '1078244513@qq.com')stu = Stu(name='hao', age=18, sex='male', email='1078244513@qq.com')

print(stu.email)复制代码
登入後複製

如何統計序列中元素的出現頻率

#問題: 統計下列數字清單中每個數字出現的次數

from random import randint
data = [randint(0, 20) for _ in range(30)]复制代码
登入後複製

方案:定義一個dict(字典),然後遍歷數組。

c = dict.fromkeys(data, 0)复制代码
登入後複製

上述程式碼會產生一個data中不同值為鍵,以0為值的一個字典物件。

for x in data:
    c[x] += 1复制代码
登入後複製

方案:使用collections套件中的Counter函數

c2 = Counter(data)复制代码
登入後複製

這個方案也可以方便的取得到出現次數最多的前幾個。

c2.most_common(3)复制代码
登入後複製

如何根據字典中的值的大小,對字典中的項目排序

問題:對以下字典中的值進行排序

cj = {x: randint(60, 100) for x in 'xyzabc'}复制代码
登入後複製

方案:sorted函數中的第二個參數,可以傳入一個函數對象,sorted會根據該函數的返回值進行排序。

sorted(cj.items(), key=lambda item:item[1])复制代码
登入後複製

註:該函數傳回一個新的字典物件

如何快速找到多個字典中的公共鍵(key)?

首先,介紹一下python中的採樣函數sample,它位於random包中。此接收一個序列類型的參數和一個數字,返回一個隨機從序列中隨機取樣獲得一個序列。如下代碼。

from random import sample
sample('abcdefg', 3)复制代码
登入後複製

問題:如何取得下列三個集合的公共鍵。

s1 = {x : randint(1, 4) for x in sample('abcdefg', randint(3, 6))}
s2 = {x : randint(1, 4) for x in sample('abcdefg', randint(3, 6))}
s3 = {x : randint(1, 4) for x in sample('abcdefg', andint(3, 6))}复制代码
登入後複製

可以使用集合的交集運算完成這項任務。

s1.keys() & s2.keys() & s3.keys()复制代码
登入後複製

如何讓字典保持有序?

collections包的OrderedDict類型,會保持進入字典的順序。

相關免費學習推薦:python影片教學

以上是寫給Python程式設計高手之 資料結構的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:juejin.im
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板