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

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

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

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

Q&A

解決済

3回答

409閲覧

if文が上手く回りません

beggier1

総合スコア7

Python

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

0グッド

1クリップ

投稿2021/06/08 05:45

list_temp_diff には"Nan"が31個混入しており、これを消したいと考えています。
その時、list_temp_diffと同期する時刻がlist_dttmにも入っているため、同じインデックス箇所を削除したいと考えています。
しかし、 if td == "Nan": に入るNanはcount通り16個しかなく、15個のNanが素通りしています。
この原因を教えて頂ければ幸いです。

python

1print(list_temp_diff.count("Nan")) #出力 31 2index = 0 3aa = [] 4count = 0 5for td in list_temp_diff: 6 if td == "Nan": 7 count +=1 8 del list_temp_diff[index] 9 del list_dttm[index] 10 index += 1 11print(list_temp_diff.count("Nan")) #出力 15 12print(count) #出力 16

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

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

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

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

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

guest

回答3

0

ベストアンサー

ループ処理中のリストに対してdelすると意図しない結果になりえます。
以下のようにインデックス取得→要素を抽出という2段階で処理するとよいでしょう。

Python

1lst1 = ['a','Nan','b','Nan'] 2lst2 = [1,2,3,4] 3 4# 条件を満たす要素位置を取得 5idx = [i for i, e in enumerate(lst1) if e != 'Nan'] 6print(idx) # [0, 2] 7 8# 条件を満たす要素を取得 9lst1 = [e for i, e in enumerate(lst1) if i in idx] 10lst2 = [e for i, e in enumerate(lst2) if i in idx] 11 12print(lst1) # ['a', 'b'] 13print(lst2) # [1, 3]

投稿2021/06/08 06:06

can110

総合スコア38234

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

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

beggier1

2021/06/08 06:31

ご回答ありがとうございます。 ご丁寧にプログラム例も作成頂き、感謝に堪えません。 これを基に自分が必要とするプログラムを書いていきたいと思います。 改めてご回答ありがとうございました。 とても参考になりました!
guest

0

おはようございます。

問題文読ませていただきました。

for文最中にdelしたことで、indexのずれが起こっているように感じております。

解決方法としては、for文で回すものはdelするものをcopyしたものとして、全てのindexに対してfor文を回せるように変更するといいと感じました。

投稿2021/06/09 00:00

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

beggier1

2021/06/09 02:14

おはようございます。 ご回答ありがとうございます。 是非参考にさせていただきます。
退会済みユーザー

退会済みユーザー

2021/06/09 02:35

いえいえ。 また困ったこととかありましたら、気軽にご相談ください。 最後に素朴な疑問なのですが、差し支えなければどのようにteratailを始められたのか教えていただくことは可能でしょうか?????‍♂️
beggier1

2021/06/15 01:55

ご回答遅くなり大変申し訳ございません。 tetatailを始めた経緯としては、大学の研究にてプログラムを一人で行わなければならず、 疑問点が生じた為、ネットで調べたところ本サイトを見つけ、質問させていただいた次第でございます。
退会済みユーザー

退会済みユーザー

2021/06/15 03:58

なるほど、ひとりでプログラム作るの大変ですね。。陰ながら応援しております〜。 貴重なご意見ありがとうございます。????‍♂️
guest

0

削除したためにindexが変更されたからでしょう。

こういう場合は、後ろからやっていくとずれません。

投稿2021/06/08 06:03

ppaul

総合スコア24666

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

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

beggier1

2021/06/08 06:06

ご回答ありがとうございます。 確かにあり得るかもしれません! 試してみます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問