[Python3]複数行の標準入力を、並びかえて一行ずつ出力する方法

複数行の標準入力を小さい順位並び替え、出力するという問題。

5
3
5
19
1
2

↑こういった入力を

1
2
3
5
19

↑こう出力して欲しいとのこと。


まず書いたコードはこれ。

import sys
a = []
for i in sys.stdin:
    a.append(int(i))
a.sort()
print(a)

複数行を一つのリストに格納→sortでそれらを並び替え→出力という感じ。

しかし、出力を確認すると…

[1, 2, 3, 5, 5, 19]

あれ?違う。要素一つずつ改行してほしい!


ということで、ver.2。

import sys
a = []
for i in sys.stdin:
    a.append(int(i))
a.sort()
for j in range(len(a)):
    print(a[j])

for 文を追加して、リストを一要素ずつ出力してみた

すると…

1
2
3
5
5
19

こうなった。おしい。笑

重なっている5は、一つでいい。


いろいろ調べてみたら、集合化することで、重複した要素を取り除けるとのこと。

再び書き直して、完成したものがこれ。

import sys
a = []
for i in sys.stdin:
    a.append(int(i))
a = list(set(a))
a.sort()
for j in range(len(a)):
    print(a[j])

一度setを使って集合化し、それをまたリスト化。

これでなんとか、完成しました。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする