千葉大学共生応用化学コース後期に開講されている「コンピューター処理」のサイトが公開されていました
その中の
6章のクイズQ2を1行で答えるまでの話
問題は
このテキストデータを読み込んで5番目に長生きの都道府県名を答える
最初に作ったのはこんな感じ 正しくは最後の行はprint(sorted(d)[-5][1])
lines = open("lifetime.txt").readlines()
d=[]
for l in lines:
p=l.replace(" "," ").replace(" "," ").replace(" "," ").split()
if len(p)==2:
d+=[(float(p[1]),p[0])]
print(sorted(d))
これを1行のプログラムにしていきます
ファイル名.pyでなくてもOKなんですか
テキストデータ 年数のあとにスペースとか改行が入っていて少し苦戦
年数は常に7からはじまることを利用してなんとかうまくできました
制作過程
まずベタなもの
次に少しずつまとめたものを作成
最後に1行化
print(sorted([(l[l.find("7"):],l) for l in open("lifetime.txt").readlines() if l.count(" ")>0])[-5][1].split()[0])
説明
11行目 ファイルを読み込み、行にスペースがあるものを対象に、その行にある7以降とその行をタプルのリスト化
12行目 昇順でソートして最後から5つ目のタプルの1 行全体の項目をスペースで分割してその最初にある都道府県名を表示
15行目 11と12を一行にしたもの