最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python代碼實現(xiàn)列表分組計數(shù)

 更新時間:2021年11月11日 15:31:14   作者:Felix  
這篇文章主要介紹了Python代碼實現(xiàn)列表分組計數(shù),利用Python代碼實現(xiàn)了使用分組函數(shù)對列表進行分組,并計算每組的元素個數(shù)的功能,需要的朋友可以參考一下

本篇閱讀的代碼片段來自于30-seconds-of-python。

1. count_by

def count_by(arr, fn=lambda x: x):
  key = {}
  for el in map(fn, arr):
    key[el] = 1 if el not in key else key[el] + 1
  return key

# EXAMPLES
from math import floor
count_by([6.1, 4.2, 6.3], floor) # {6: 2, 4: 1}
count_by(['one', 'two', 'three'], len) # {3: 2, 5: 1}


count_by根據(jù)給定的函數(shù)對列表中的元素進行分組,并返回每組中元素的數(shù)量。該使用map()使用給定函數(shù)映射給定列表的值。在映射上迭代,并在每次出現(xiàn)時增加元素數(shù)。

該函數(shù)使用not in判斷目前字典中是否含有指定的key,如果不含有,就將該key加入字典,并將對應(yīng)的value設(shè)置為1;如果含有,就將value加1。

2. 使用字典推導(dǎo)式

字典推導(dǎo)式有{ key_expr: value_expr for value in collection if condition }這樣的形式。group_by函數(shù)中字典推導(dǎo)式的value_expr是一個列表,該列表使用了列表推導(dǎo)式來生成。即

{ key_expr: [x for x in collection2 if condition2] for value in collection1 if condition1 }


同時,我們可以看到根據(jù)group_by代碼中的字典推導(dǎo)式,可能計算出key相同的項,根據(jù)Pyrhon中字典的類型的規(guī)則,key相同的,只保留最新的key-value對。實際上當(dāng)key相同時,value值也一樣。[el for el in lst if fn(el) == key]推導(dǎo)式的for語句中只有key一個變量。

>>> d = {'one': 1, 'two': 2, 'three': 3, 'two': 2}
>>> d
{'one': 1, 'two': 2, 'three': 3}
>>> d = {'one': 1, 'two': 2, 'three': 3, 'two': 22}
>>> d
{'one': 1, 'two': 22, 'three': 3}
>>>

這里也可以使用同樣的方式,在分組之后直接獲取列表長度。不過這種寫法遍歷了兩次列表,會使程序效率變低。

def count_by(lst, fn):
  return {key : len([el for el in lst if fn(el) == key]) for key in map(fn, lst)}

3. 使用collections.defaultdict簡化代碼

class collections.defaultdict([default_factory[, ...]])


collections.defaultdict包含一個default_factory屬性,可以用來快速構(gòu)造指定樣式的字典。

當(dāng)使用int作為default_factory,可以使defaultdict用于計數(shù)。因此可以直接使用它來簡化代碼。相比字典推導(dǎo)式的方法,只需要對列表進行一次循環(huán)即可。

 from collections import defaultdict

def count_by(lst, fn):
  d = defaultdict(int)
  for el in lst:
    d[fn(el)] += 1
  return d


當(dāng)使用 list 作為 default_factory時,很輕松地將(鍵-值對組成的)序列轉(zhuǎn)換為(鍵-列表組成的)字典。

def group_by(lst, fn):
  d = defaultdict(list)
  for el in lst:
    d[fn(el)].append(el)
  return d

# EXAMPLES
from math import floor
group_by([6.1, 4.2, 6.3], floor) # {4: [4.2], 6: [6.1, 6.3]}
group_by(['one', 'two', 'three'], len) # {3: ['one', 'two'], 5: ['three']}

到此這篇關(guān)于Python代碼實現(xiàn)列表分組計數(shù)的文章就介紹到這了,更多相關(guān)Python列表分組計數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python Cairo庫的使用教程及代碼案例

    Python Cairo庫的使用教程及代碼案例

    Cairo庫是一個開源的2D圖形庫,支持矢量圖形的繪制,它廣泛應(yīng)用于X Window System,用于制作高質(zhì)量的圖形輸出,本文給大家介紹了Python Cairo庫的使用教程及代碼案例,需要的朋友可以參考下
    2025-04-04
  • Python基礎(chǔ)教程之控制結(jié)構(gòu)詳解

    Python基礎(chǔ)教程之控制結(jié)構(gòu)詳解

    Python中有三大控制結(jié)構(gòu),分別是順序結(jié)構(gòu)、分支結(jié)構(gòu)(選擇結(jié)構(gòu))以及循環(huán)結(jié)構(gòu),任何一個項目或者算法都可以使用這三種結(jié)構(gòu)來設(shè)計完成,這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)教程之控制結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • 深入理解python中pytest.ini的配置方法和參數(shù)

    深入理解python中pytest.ini的配置方法和參數(shù)

    Pytest 是 Python 測試框架中最流行的一個,而 pytest.ini 文件則是 pytest 配置文件的核心,在本文中,將詳細介紹 pytest.ini 文件的配置方法和可能的參數(shù),幫助您更好地掌握 Pytest 的使用,需要的朋友可以參考下
    2024-10-10
  • Python+OpenCV實現(xiàn)鼠標(biāo)畫瞄準星的方法詳解

    Python+OpenCV實現(xiàn)鼠標(biāo)畫瞄準星的方法詳解

    所謂瞄準星指的是一個圓圈加一個圓圈內(nèi)的十字線,就像玩射擊游戲狙擊槍開鏡的樣子一樣。本文將利用Python+OpenCV實現(xiàn)鼠標(biāo)畫瞄準星,感興趣的可以嘗試一下
    2022-08-08
  • python使用多進程的實例詳解

    python使用多進程的實例詳解

    本文通過實例代碼給大家介紹了python使用多進程的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-09-09
  • Python處理文本換行符實例代碼

    Python處理文本換行符實例代碼

    這篇文章主要介紹了Python處理文本換行符實例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Python利用pygame模塊制作代碼雨

    Python利用pygame模塊制作代碼雨

    對Python游戲有所了解的朋友都知道,在2D的游戲制作中,經(jīng)常會用到一個模塊pygame,他能幫助我們實現(xiàn)很多方便使用的功能,本文就來用pygame模塊制作代碼雨效果,需要的可以了解一下
    2023-05-05
  • Pytorch 實現(xiàn)權(quán)重初始化

    Pytorch 實現(xiàn)權(quán)重初始化

    今天小編就為大家分享一篇Pytorch 實現(xiàn)權(quán)重初始化,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python使用微信itchat接口實現(xiàn)查看自己微信的信息功能詳解

    Python使用微信itchat接口實現(xiàn)查看自己微信的信息功能詳解

    這篇文章主要介紹了Python使用微信itchat接口實現(xiàn)查看自己微信的信息功能,結(jié)合實例形式分析了Python微信itchat模塊常見功能與操作技巧,需要的朋友可以參考下
    2019-08-08
  • Pycharm 2020.1 版配置優(yōu)化的詳細教程

    Pycharm 2020.1 版配置優(yōu)化的詳細教程

    這篇文章主要介紹了更新Pycharm 2020.1 版配置優(yōu)化的詳細教程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08

最新評論

茶陵县| 吐鲁番市| 丘北县| 白银市| 芦山县| 龙井市| 建阳市| 宜城市| 石首市| 东阳市| 曲阜市| 泰安市| 临汾市| 昆明市| 鲁山县| 锡林郭勒盟| 孟村| 西畴县| 卢氏县| 睢宁县| 鹤庆县| 灌阳县| 化州市| 安溪县| 新巴尔虎左旗| 六安市| 伊宁县| 神农架林区| 宁海县| 南开区| 崇仁县| 文水县| 定陶县| 定边县| 乌兰察布市| 长宁县| 杂多县| 宁乡县| 蓬溪县| 石林| 芜湖市|