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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

4回答

292閲覧

Python3 リストのから一致する数字の項数を削除する方法

python3_beginer

総合スコア46

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1グッド

0クリップ

投稿2018/04/07 12:42

編集2018/04/07 13:27

問題)
部屋の全体のリストからアンラッキーナンバーを含む数だけ除き、その他を表示する方法

疑問点)
アンラッキーナンバーを含む部屋の場合は NO
それ以外は YES と出力しました。

課題の指示通りに、該当する部屋番号をリストから削除する方法、
そして、残りの部屋番号リストを表示する方法がわかりません。

del(), remove()を利用し、リストから削除したいのですが、
該当するリストの項数を指定できません

問題)

入力例1
4
5
101
204
301
401
501

出力例1
101
301
501

入力例2
9
3
409
509
109

出力例2
none

入力例3
1
6
101
102
205
224
231
314

出力例3
205
224


私の答え)

N = 3 (アンラッキーナンバー)
M = 6 (部屋の総数)

a = [int(input()) for i in range(M)]

num =[]
for i in range(M):
l = [int(x) for x in list(str(a[i]))]
if N in l:
print("NO")
else:
print("OK")

出力値

NO
NO
OK
NO
NO
OK

arch_👍を押しています

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

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

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

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

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

LouiS0616

2018/04/07 13:20

入力例と出力例は残しておいた方が良いかと思いますが...
guest

回答4

0

課題ということで直接コードは書きません。悪しからず。
部屋の番号が条件に一致するかどうか(OK/NO)はすでに判定できているのですよね。ですから、OKのものだけ集計すれば良いのです。もう一つリストを作って、if-else文の中で・・・という感じで書けるのではないでしょうか。

投稿2018/04/07 12:50

hayataka2049

総合スコア30933

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

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

python3_beginer

2018/04/07 13:36

お返事頂きありがとうございます。 OKのものだけ集計する考えよりも、リストを削除しなければ....と取りつかれたように考えておりました。 押してダメなら引いてみろっと言われたみたいでハッとしました。笑 違う視点をもってプログラミングできるようとにかく数をこなそうと思います。 ご指導ありがとうございました。
hayataka2049

2018/04/07 13:42

数をこなされるのは良いかと思いますが、質問文の編集で課題のこと消しちゃうのはちょっといただけないかもしれないな・・・それについてとやかく言うつもりは御座いませんが 回答者に無駄に気を遣わせるくらいなら、いっそそういうことは何も言わずに出すか、最初から100%自力で解いてください 返信不要
guest

0

ベストアンサー

『リストから削除する』のではなく、『新たにリストを作る』方が簡単ですよ。

Python

1N = int(input()) 2 3M = int(input()) 4 5a = [int(input()) for i in range(M)] 6 7num =[] 8for i in range(M): 9 l = [int(x) for x in list(str(a[i]))] 10 if N in l: 11 # print("NO") 12 pass 13 else: 14 # print("OK") 15 num.append(a[i]) 16 17if num: 18 print(*num, sep='\n') 19else: 20 print('none')

Wandbox

投稿2018/04/07 12:46

編集2018/04/07 12:49
LouiS0616

総合スコア35660

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

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

LouiS0616

2018/04/07 12:55

『ほとんど完成しているからいいや』とコードを書いてしまいましたが、ちょっとまずったかも。
python3_beginer

2018/04/07 13:34

お返事頂きありがとうございます。 新しくリスト作成、pass、 print(*num, sep=''\n)など知らない知識ばかりでした。 コードを打って説明してくださったから、得られた知識だと感謝しております。 ご指導ありがとうございます。
guest

0

python

1unluckey = input() 2rooms_num = int(input()) 3rooms = [input() for i in range(rooms_num)] 4 5ng_rooms = [] 6for room in rooms: 7 if room.find(unluckey) != -1: 8 ng_rooms.append(room) 9print("-----") 10 11for ng in ng_rooms: 12 rooms.remove(ng) 13 14if len(rooms) == 0: 15 print("none") 16else: 17 for room in rooms: 18 print(room) 19

投稿2018/04/08 03:00

katoy

総合スコア22324

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

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

python3_beginer

2018/04/10 06:20

お返事頂きありがとうございます。 参考にさせて頂きます。ご指導ありがとうございました。
guest

0

python

1n, m = [input() for _ in range(2)] 2rooms = [input() for _ in range(int(m))] 3 4requests = list(filter(lambda r: not n in r, rooms)) 5 6print('none' if not requests else '\n'.join(requests))

類似回答として勉強のもとにしてください。
アイデアは、アンラッキーナンバーnがルームナンバーに含まれていない数字だけをフィルタリングすることです。

投稿2018/04/07 13:05

編集2018/04/07 13:09
arch_

総合スコア158

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

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

arch_

2018/04/07 13:26

変数の命名を問題に合うようにするとなお良いと思います。 また、リストに対する操作はmapやfilterを使うと楽にできる場合が多いと思います。 個人的には関数型プログラミングちっくに考えるのがお得だと思っています。
python3_beginer

2018/04/07 13:38

お返事頂きありがとうございます。 変数の命名を誰が見てもすぐわかるように次回から意識してみます。 一人で解くだけなので、一文字等が多いので気を付けたいです。 map, filiter 等の基礎知識がないので、もう一度 関数型を復習してみようと思います。 ご指導ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問