當前位置 主頁 > 服務器問題 > win服務器問題匯總 > 最大化 縮小

    python如何統計序列中元素

    欄目:win服務器問題匯總 時間:2019-10-21 10:37

    本文實例為大家分享了python統計序列中元素的具體代碼,供大家參考,具體內容如下

    問題1:

           隨機數列[12,5,8,7,8,9,4,8,5,...] 中出現次數最高的3個元素,他們出現的次數

    問題2:

           對某英文文章的單詞,進行詞頻統計,找出出現次數最搞得10個單詞,他們出現的次數是多少?

    上面問題都是以字典的形式保存結果

    如何解決問題1?

    方法1:

    #!/usr/bin/python3
     
    from random import randint
     
     
    def count_seq(data):
       
      # 初始化統計結果字典,data中的key作為結果字典的key,0作為每個key的初始值
      result_c = dict.fromkeys(data, 0)
       
      # 循環data,對字典中中碰到的值進行 +1 ,循環完成后就是結果
      for x in data:
        result_c[x] += 1
      return result_c
     
    if __name__ == '__main__':
      # 生成20個隨機數
      data = [randint(0, 20) for _ in range(20)]
      print(data)
       
      # 結果
      result_c = count_seq(data)
      for i in result_c:
        print(i, result_c[i])

    方法2:

    使用 collections下Counter對象

    #!/usr/bin/python3
     
    from random import randint
    from collections import Counter
     
     
    def count_seq(data):
       
      # 創建Counter對象,并把打他傳遞進去
      median_c = Counter(data)
       
      # 返回統計最大的3個數
      return median_c.most_common(3)
     
    if __name__ == '__main__':
      # 生成20個隨機數
      data = [randint(0, 20) for _ in range(20)]
      print(data)
       
      # 結果
      result_c = count_seq(data)
      print(result_c, dict(result_c))

    問題2如何解決?

    import re
    from collections import Counter
     
     
    def count_words():
      # 讀取文件
      with open('english_article', 'r', encoding='utf-8') as data:
        print()
        # 文件單詞分割
        data_list = re.split('\W+', data.read())
      # 單詞統計
      words = Counter(data_list)
      # 取單詞統計最大的10個值
      return words.most_common(10)
     
    if __name__ == '__main__':
      result = count_words()
      print(result)
    
    

    以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持IIS7站長之家。

教我怎样炒股