###前提・実現したいこと
pythonでリストの勉強をしております。
多数の数値を格納しているリストを、例えば100以下の数値は一括して削除、もしくは他の数値や文字列に一括して変更することはできるのでしょうか。また100以上の数値の数を返すような関数等あれば教えて頂きたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
for分使うのがオートゾックスだと思いますが、内包表記を使うとシンプルに書けそうですね。
python
1sample = [2, 100, 3, 4, 650, 20] 2result1 = [x for x in sample if x >= 100] # 100以上の値の入ったリストを返す 3result2 = ["Over 100" for x in sample if x >= 100] # 100以上の値は"Over 100"という文字列に置き換える。
参考資料
投稿2017/09/08 05:03
編集2017/09/08 05:05総合スコア2244
0
mapとfilterがあります。
100以上を返す
python3
1a = [1,99,100,101] 2print(list(filter(lambda x: x>=100,a)))
100より小さいものを置換 (例:1000に置換)
python3
1a = [1,99,100,101] 2print(list(map(lambda x: x if x>=100 else 1000,a)))
投稿2017/09/08 04:58
総合スコア452
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
lambdaとmapまたはfilterを使うといいんですね。
ありがとうございます。
0
リスト内包表記
でできます。
Python
1src = [1,100,200,3] 2 3# 100以下の数値は一括して削除 4 5# map, reduce, filterによるシーケンス操作 6# http://python.civic-apps.com/map-reduce-filter/ 7 8dst = [x for x in src if x >= 100] 9print(dst) # [100, 200] 10 11 12# もしくは他の数値や文字列に一括して変更 13 14# Python のリスト内包表記に、if ~ だけでなく、else ~ を付ける方法 15# http://qiita.com/HirofumiYashima/items/0e5fcebd083bae1a78a2 16 17dst = [x if x >= 100 else 'err' for x in src] 18print(dst) # ['err', 100, 200, 'err'] 19 20 21# 100以上の数値の数を返す 22 23cnt = len([x for x in src if x >= 100]) 24print(cnt) # 2 25 26# でもよいがリスト生成するのも無駄なので愚直に以下でもよい 27 28def countGe100(l): 29 cnt = 0 30 for x in l: 31 if x >= 100: 32 cnt = cnt + 1 33 return cnt 34 35cnt = countGe100(src) 36print(cnt) # 2 37
投稿2017/09/08 05:24
総合スコア38266
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/08 05:25