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

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

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

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

Python

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

Q&A

解決済

4回答

1809閲覧

python3 リストの一括削除等

invoicerm

総合スコア14

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2017/09/08 04:44

編集2017/09/08 04:51

###前提・実現したいこと
pythonでリストの勉強をしております。
多数の数値を格納しているリストを、例えば100以下の数値は一括して削除、もしくは他の数値や文字列に一括して変更することはできるのでしょうか。また100以上の数値の数を返すような関数等あれば教えて頂きたいです。

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

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

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

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

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

guest

回答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"という文字列に置き換える。

参考資料

内包表記 - Dive Into Python3

投稿2017/09/08 05:03

編集2017/09/08 05:05
manzyun

総合スコア2244

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

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

miyahan

2017/09/08 05:25

1000万要素のリストで計ってみたら ・内包表記:640ms ・NumPy:1130ms ・filter():1630ms と、内包表記でやるのが一番速かったので、manzyun さんの方法が最適だと思いました。
guest

0

numpyを使うと簡単です。

Python

1>>> import numpy as np 2>>> my_array = np.array([102, 101, 54, 72, 103]) 3>>> print(my_array[my_array >= 100]) 4array([102, 101, 103])

なお、リストからnumpy.arrayへの変換も、次のように簡単です。

Python

1my_array = np.array(my_list)

投稿2017/09/08 05:08

LouiS0616

総合スコア35660

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

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

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

calkinos

総合スコア452

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

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

invoicerm

2017/09/26 08:58

lambdaとmapまたはfilterを使うといいんですね。 ありがとうございます。
guest

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

can110

総合スコア38266

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問