python数据结构编程_写给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数据结构编程_写给Python编程高手之 数据结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: maven学习笔记之IDEA+Maven
- 下一篇: SpringBoot学习系列之一