Python モードでの問題の例を見つける

WBOY
リリース: 2016-06-16 08:41:42
オリジナル
3366 人が閲覧しました

この記事の例では、比較的代表的なアプリケーションである Python でモード問題を見つける方法を説明します。皆さんの参考に共有してください。詳細は以下のとおりです。

問題の説明:

マルチセット内で最大の多重度を持つ要素はモードと呼ばれます...それは繰り返し要素を持つことができるセットです。このセット内で最も多く繰り返される数値はそのモードと呼ばれます...
たとえば、S = [1,2,2,2,3,5]、多重度は 2、その多重度は 3 です

コード例は次のとおりです:

list_num = []
list_num_count = 0
dict_num ={}
#从文件读入,文件第一行为集合中元素的个数,以后每一行为一个元素
list_num_count = int(open('input.txt','r').readline())
for line_num, line in enumerate(open("input.txt",'r')):
  if line_num > 0:
    list_num += line.split()
#将读到的元素加入的字典中
for item in list_num:
  if dict_num.has_key(item):
    dict_num[item] += 1
  else:
    dict_num.setdefault(item,1)
  pass

#找到出现次数最多的那个数,找到重数
dict_sort_by_top = {}
top_value = 0
for valus in dict_num.itervalues():
  if valus> top_value:
    top_value = valus
  pass

#根据重数找到众数...这是因为考虑到可能有多个元素有相同多的重数
the_pop_num = 0
the_pop_num_count = 0
for keys,values in dict_num.iteritems():
  if values == top_value:
    print 'the pop num is %s,and the appear num is %s' % (keys,values)
    the_pop_num = keys
    the_pop_num_count = values
#输出到文件,第一行为从数,第二行为重数
write_line = '%s\n%s' %(the_pop_num, the_pop_num_count)
open("output.txt",'w').write(write_line)

ログイン後にコピー

次のように、同じレベルにディレクトリファイル input.txt があると仮定します。

8
11
37
2
37
2
45
99
37
ログイン後にコピー

最初の行の 8 は要素の数を表し、後続の各行に 1 つの要素があります。

テスト環境はPython2.7.6、

input.txt ファイルに対して Python プログラムを実行した結果は次のとおりです:

the pop num is 37,and the appear num is 3

ログイン後にコピー

同時に、モード37とその繰り返し数3を記録するoutput.txtファイルが生成されます。

この記事が皆さんの Python プログラミングに役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート