質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

1498閲覧

リストの中で重複している数字を排除し新たにリストを生成する方法

Spursfun2002

総合スコア15

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/09 02:17

Forループなどを使ってリストから重複している数字を排除して新たにリストを生成する方法って何かありますか??

例えば

print("Enter a list of numbers separated by spaces:")
ここに44567を入れるとすれば
list = [int(s) for s in input().split()]

a = list.count(4)
b = list.count(5)
c = list.count(6)
d = list.count(7)

if a == 1:
print(4, end = ' ')
if b == 1:
print(5, end = ' ')
if c == 1:
print(6, end = ' ')
if d == 1:
print(7, end = ' ')

このようなコードを作ることができ結果的に567という結果が出力されると思います。
しかし今回は予めどの数字が入力されるかがわからない状態で同じように重複した数字を排除する方法がなにかありませんか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

Python

1lst = # あなたのリスト 2new_lst = list(set(lst)) 3```new_lstに重複要素を排除したリストが入ります。しかし順序はバラバラです 4 5順序を元と同じにするには 6```Python 7 8lst = # あなたのリスト 9new_lst = sorted(set(lst), key=lst.index) 10 11```のようにやれば出来ます

投稿2020/05/09 02:30

編集2020/05/09 02:35
ForestSeo

総合スコア2720

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Spursfun2002

2020/05/09 02:37

わざわざ編集していただきありがとうございます。参考にさせていただきます。ありがとうございます!
LouiS0616

2020/05/09 02:44

@H-Kazuki さん そのコードですと 4 4 5 6 7 が 4 5 6 7 になりませんか?
Spursfun2002

2020/05/09 03:35

出力されると567になるコードはどんなのがありますか?
ForestSeo

2020/05/09 09:25

私の認識が間違っていたらすみません。 重複を排除っていうのは要素が一つだけのものを取り出すってことですか? それでしたら、LouiS0616さんのコードとかですか?
guest

0

投稿2020/05/09 02:20

eneko0513

総合スコア349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Spursfun2002

2020/05/09 02:30

そうですね。 でもSet()にしてしまうとリスト内の順序までかわってしまうのでそれはさけたいんです。
Spursfun2002

2020/05/09 02:31

すいません、ややこしくて
guest

0

実行効率を考えると、辞書を使うのが良いでしょうね。O(n)です。

Python

1from collections import Counter, OrderedDict 2 3class OrderedCounter(Counter, OrderedDict): 4 pass 5 6 7src = [int(s) for s in input().split()] 8counter = OrderedCounter(src) 9 10dst = [ 11 k for k, v in counter.items() 12 if v == 1 13] 14print(*dst)

Wandbox

投稿2020/05/09 02:43

LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問