python数据结构编程_写给Python编程高手之 数据结构
python視頻教程欄目介紹Python編程需要注意的關(guān)鍵點(diǎn)。
如何在列表,字典,集合中根據(jù)條件篩選數(shù)據(jù)
案例:如何在下列列表data中篩選出大于0的數(shù)data = [1, -1, 2, 3, 4, 7]復(fù)制代碼
使用filter函數(shù),第一個(gè)參數(shù)為一個(gè)函數(shù),也可以像如下代碼傳入一個(gè)lambda表達(dá)式。list(filter(lambda x: x >= 0, data))復(fù)制代碼
另一種方案是像如下使用列表生成式,這種方案相對(duì)于上一種方案更加高效。print([x for x in data if x >= 0])復(fù)制代碼
在字典這種數(shù)據(jù)結(jié)構(gòu)中,也可以使用類似的字典生產(chǎn)式。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}復(fù)制代碼
如何為元組中的每個(gè)元素命名,提高程序可讀性
方案:定義常量,使用常量索引元組中的元素,例如下列代碼stu = ('hao', 18, 'male', '1078244513@qq.com')
NAME = 0AGE = 1SEX = 2print(stu[SEX])復(fù)制代碼
方案:使用collections包的namedtuple的函數(shù),該函數(shù)會(huì)返回一個(gè)新"類"的定義,使用方式如下。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)復(fù)制代碼
如何統(tǒng)計(jì)序列中元素的出現(xiàn)頻率
問(wèn)題: 統(tǒng)計(jì)下列數(shù)字列表中每個(gè)數(shù)字出現(xiàn)的次數(shù)from random import randint
data = [randint(0, 20) for _ in range(30)]復(fù)制代碼
方案:定義一個(gè)dict(字典),然后遍歷數(shù)組。c = dict.fromkeys(data, 0)復(fù)制代碼
上述代碼會(huì)生成一個(gè)data中不同值為鍵,以0為值的一個(gè)字典對(duì)象。for x in data:
c[x] += 1復(fù)制代碼
方案:使用collections包中的Counter函數(shù)c2 = Counter(data)復(fù)制代碼
這種方案也可以方便的獲取到出現(xiàn)次數(shù)最多的前幾個(gè)。c2.most_common(3)復(fù)制代碼
如何根據(jù)字典中的值的大小,對(duì)字典中的項(xiàng)排序
問(wèn)題:對(duì)如下字典中的值進(jìn)行排序cj = {x: randint(60, 100) for x in 'xyzabc'}復(fù)制代碼
方案:sorted函數(shù)中的第二個(gè)參數(shù),可以傳入一個(gè)函數(shù)對(duì)象,sorted會(huì)根據(jù)該函數(shù)的返回值進(jìn)行排序。sorted(cj.items(), key=lambda item:item[1])復(fù)制代碼
注:該函數(shù)返回一個(gè)新的字典對(duì)象
如何快速找到多個(gè)字典中的公共鍵(key)?
首先,介紹一下python中的采樣函數(shù)sample,它位于random包中。該接收一個(gè)序列類型的參數(shù)和一個(gè)數(shù)字,返回一個(gè)隨機(jī)從序列中隨機(jī)采樣獲得一個(gè)序列。如下代碼。from random import sample
sample('abcdefg', 3)復(fù)制代碼
問(wèn)題:如何獲取下列三個(gè)集合的公共鍵。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))}復(fù)制代碼
可以使用集合的交集操作完成這項(xiàng)任務(wù)。s1.keys() & s2.keys() & s3.keys()復(fù)制代碼
如何讓字典保持有序?
collections包的OrderedDict類型,會(huì)保持進(jìn)入字典的次序。相關(guān)免費(fèi)學(xué)習(xí)推薦:python視頻教程
總結(jié)
以上是生活随笔為你收集整理的python数据结构编程_写给Python编程高手之 数据结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: maven学习笔记之IDEA+Maven
- 下一篇: python 打开文件,读取文件内容