【python】Head First Python(五)

9435 ワード

つまらないから、『Head First Python』を見て時間をつぶす.この本は普通だと感じて、退屈な时にひっくり返すことができます.1章ごとにページ数が多いが、何も言わなかった.
 
まず第五章を見ます.知識点を記録します.
f.readline():ファイルの1行のデータを読み込む
split():文字列を所定の区切り文字でリストに分割できます.
sort():リスト内のデータを小さいものから大きいものに並べ替えると、元のデータが破壊され、reverse=Trueに転送されて降順することができます.
sorted():リスト内のデータを小さいものから大きいものに並べ替え、コピーされた空間に存在し、元のデータはまだあり、reverse=Trueに転送すると降順することができます.注意とsortの使い方が違います.コレクションをソートして、リストを返すことができます.
コレクションはスライスできませんが、ソートできます.
すなわちsorted(set(A)[0:3]が正しい
set(sorted(A)[0:3]エラー
>>> s = 'apple,a,day,keeps,the,doctor,away'

>>> l = s.split(',')

>>> l

['apple', 'a', 'day', 'keeps', 'the', 'doctor', 'away']
>>> d =[2,7,1,4,9,3]

>>> d.sort()

>>> d

[1, 2, 3, 4, 7, 9]
>>> d =[2,7,1,4,9,3]

>>> d2 = sorted(d)

>>> d2

[1, 2, 3, 4, 7, 9]

>>> d

[2, 7, 1, 4, 9, 3]

 
4組の入力データに対して、各組のデータが重複しない最小の3つのデータを出力します.
入力はそれぞれ4つのtxtから得られる:
['2.01', '2.01', '2.22', '2.34', '2.34', '2.45', '3.01', '3.10', '3.21']['2.11', '2.11', '2.23', '2.23', '2.59', '3.10', '3.10', '3.21', '3.21']['2.22', '2.38', '2.49', '3.01', '3.01', '3.02', '3.02', '3.02', '3.22']['2.18', '2.25', '2.39', '2.54', '2.55', '2.55', '2.55', '2.58', '2.58']
 
コード:
def sanitize(time_string):

    if '-' in time_string:

        splitter = '-'

    elif ':' in time_string:

        splitter = ':'

    else:

        return (time_string)



    (mins,secs) = time_string.split(splitter)

    return (mins + '.' + secs)



jaf = open('james.txt','r')

james = jaf.readline().strip().split(',')



juf = open('julie.txt','r')

julie = juf.readline().strip().split(',')



mif = open('mikey.txt','r')

mikey = mif.readline().strip().split(',')



saf = open('sarah.txt','r')

sarah = saf.readline().strip().split(',')



james_correct = [sanitize(c) for c in james]

julie_correct = [sanitize(c) for c in julie]

mikey_correct = [sanitize(c) for c in mikey]

sarah_correct = [sanitize(c) for c in sarah]



print(sorted(set(james_correct))[0:3])

print(sorted(set(julie_correct))[0:3])

print(sorted(set(mikey_correct))[0:3])

print(sorted(set(sarah_correct))[0:3])            
>>> ================================ RESTART ================================

>>> 

['2.01', '2.22', '2.34']

['2.11', '2.23', '2.59']

['2.22', '2.38', '2.49']

['2.18', '2.25', '2.39']