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

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

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

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

Q&A

解決済

4回答

6065閲覧

Pythonのリスト内の要素の数を数えるプログラム

gymgym

総合スコア97

Python

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

0グッド

0クリップ

投稿2018/01/08 15:30

a =[ 0.1 0. 0. 0. 0. 0. 0.9 0. 0.2 0. 0.3 0. 0. 0.1 0. 0. 0. 0.4 1.1 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 0.9 0.8 1. 0.8 1. 1. 1. 1. 1.1 1.1 1. 1. 1. 1. 1.4 1. 1. 1. 1. 1. 1. 1. 1. 1.1 1.1 2. 2. 1.6 1.7 1.5 2. 2. 1.9 2.1 2.2 2. 2. 2.2 2. 2. 2. 2. 2.1 2. 2. 2. 2. 2.2 2.1 2.2 2.2 2. 3. 2.7 2.8 2.9 3. 2.9 2.9 3. 3. 3. 3. 3. 3. 2.5 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. ]

aのリスト内の2.8から3の要素の数を数える場合、どのようなプログラムになるでしょうか。

よろしくお願い致します。

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

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

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

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

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

guest

回答4

0

内包表記を使うのが Python らしくてスマートかと思いますが、右も左もわからない状態ならループを練習した方がいいでしょう。

リスト

投稿2018/01/08 15:40

Zuishin

総合スコア28660

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

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

0

こんにちは。

以下でいかがでしょうか?

python

1len([n for n in a if 2.8 <= n <= 3.0])

参考になれば幸いです。

投稿2018/01/08 15:42

jun68ykt

総合スコア9058

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

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

0

もう解決していますが、numpy.histogramに数えてもらいました。

bins = np.linspace(0, 3, 16)にして数えてもらうと深刻な浮動小数点バグがあるようですが、
見なかったことにしました。

python

1import numpy as np 2 3a =['''0.1 0. 0. 0. 0. 0. 0.9 0. 0.2 0. 0.3 0. 0. 0.1 0. 4 0. 0. 0.4 1.1 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 0.9 5 0.8 1. 0.8 1. 1. 1. 1. 1.1 1.1 1. 1. 1. 1. 1.4 1. 6 1. 1. 1. 1. 1. 1. 1. 1.1 1.1 2. 2. 1.6 1.7 1.5 2. 7 2. 1.9 2.1 2.2 2. 2. 2.2 2. 2. 2. 2. 2.1 2. 2. 2. 8 2. 2.2 2.1 2.2 2.2 2. 3. 2.7 2.8 2.9 3. 2.9 2.9 3. 3. 9 3. 3. 3. 3. 2.5 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 10 3. 3. 3.'''] 11 12a = np.fromstring(a[0], sep=' ') 13bins = [-np.inf, 2.8, 3.] 14b, c = np.histogram(a, bins=bins) 15ans = b[-1] 16print(ans)

投稿2018/01/09 02:57

mkgrei

総合スコア8560

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

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

gymgym

2018/01/09 03:38

回答ありがとうございます。 参考にさせていただきます。
guest

0

ベストアンサー

Python3.X系で回答します。
はじめに、例で示されたリストではそもそもエラーになります。

数値ごとにコンマ(,)で区切るか、リストの中身全体を文字列としてシングル(もしくはダブル)クォーテーション("")で囲む必要があります。

今回はリスト内をクォーテーションで囲み、一つの文字列として扱うこととします。

python

1# 例のスペース区切りの数値の羅列を文字列化したもの 2a = ['0.1 0. 0. 0. 0. 0. 0.9 0. 0.2 0. 0.3 0. 0. 0.1 0. 0. 0. 0.4 1.1 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 0.9 0.8 1. 0.8 1. 1. 1. 1. 1.1 1.1 1. 1. 1. 1. 1.4 1. 1. 1. 1. 1. 1. 1. 1. 1.1 1.1 2. 2. 1.6 1.7 1.5 2. 2. 1.9 2.1 2.2 2. 2. 2.2 2. 2. 2. 2. 2.1 2. 2. 2. 2. 2.2 2.1 2.2 2.2 2. 3. 2.7 2.8 2.9 3. 2.9 2.9 3. 3. 3. 3. 3. 3. 2.5 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3.'] 3 4# 文字列のリスト化 5b = a[0].strip().split() 6 7# リストから 2.8 以上 3.0 以下の要素を抽出(該当要素のみリスト化) 8c = [float(x) for x in b if 2.8 <= float(x) <= 3] 9 10# 該当要素の数を数える 11len(c) 12

結果は 25 になります。

投稿2018/01/08 15:54

編集2018/01/08 19:30
ddd_

総合スコア32

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問