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

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

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

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

Q&A

解決済

3回答

3606閲覧

Python3 複数行のスペース区切り文字列を計算できるかたちに

yuyu127

総合スコア27

Python 3.x

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

0グッド

0クリップ

投稿2017/12/17 02:21

Python3で、複数行のスペース区切り文字列を受け取り計算したいのですが、良い方法はありますでしょうか。

例:
行数3

与えられた文字列(スペース区切り)
1 2 3 4
5 6 7 8
9 10 11 12

これを読み込みたい。

list = []
for i in range(3)):
list.append(input().strip())

出力list
['1 2 3 4', '5 6 7 8', '9 10 11 12']

ここから、list内の'1 2 3 4'と'5 6 7 8'を
各要素毎に掛け算するにはどういうやり方がありますでしょうか。

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

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

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

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

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

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

guest

回答3

0

ベストアンサー

私もmkgreiさんが書かれているnumpyの使用をお勧めしますが、もし使わないのであれば、

  • str.split()にて、区切り文字列での分割
  • map()にて int を適用することで、各要素の数値化
  • 内包表記にて各要素毎に計算

で記述できます。

Python

1lst = [] 2for i in range(3): 3 d = list(map(int, input().strip().split())) 4 lst.append(d) 5 6# リスト1とリスト2の各要素を掛け算 7ret = [(l1*l2) for l1,l2 in zip(lst[0], lst[1])] 8print(ret)

投稿2017/12/17 03:26

magichan

総合スコア15898

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

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

yuyu127

2017/12/17 10:42

magichan様 回答ありがとうございました。 リストをarrayに変換してから、内積をとりました。 N = 3 lst = [] for i in range(N): d = list(map(float, input().strip().split())) lst.append(d) lst = np.array(lst) np.dot(lst[0],lst[1])
guest

0

python

1import numpy as np 2s = '''1 2 3 4 35 6 7 8 49 10 11 12''' 5 6a = np.fromstring(s, dtype=int, sep=' ').reshape(-1, 4) 7print(a) 8print(np.prod(a, axis=0)) # col 9print(np.prod(a, axis=1)) # row

投稿2017/12/17 02:36

mkgrei

総合スコア8560

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

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

yuyu127

2017/12/17 10:35

mkgrei様 numpyを使いたいと思います。 実際には、入力される行数などは未定なので、inputをうまく使いたいと思います。
guest

0

私は趣味でC++やっています。

Pythonはめったに触っていませんが。

[質問時のヒント] 質問するときや回答するときにコードを貼り付ける場合は"</>"ボタンを押して、 出てきたやつ( "---ここに言語..." ) の中に記述してください。 今回はいいですが、Pythonはインデントがものを言うので、意味がかなり変わってきます。 C#等のようにインデントは可読性のためにある言語でも、このボタンで可読性が上がるので、 回答が得やすくなります。

C言語やC++なら、こういう場合、

0. データを文字列として受け取る 1. C言語でいうstrtok関数で分割 2. 取得した分割後のデータをC言語でいうatoi関数でint型に変換 3. 足すなり、かけるなり、引くなりする。

みたいな感じ。

strtok関数 -> 文字列分割するための関数
atoi関数 -> 文字列を数列 ( int ) にするための関数

なので、

「Python 文字列 分割」で検索すると、

【Python入門】split関数で文字列の分割の仕方

がヒットしました。

これによると split関数で分割するようです。

これで分割して、別の配列? リスト? に入れる。( 一時的。 )

「Python 文字列 数値 変換」で検索すると

文字列及び数値を整数に変換(int)

がヒットしました。

これによると int() で変換が可能らしいです。

投稿2017/12/17 02:35

BeatStar

総合スコア4958

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

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

yuyu127

2017/12/17 10:33

BeatStar様 ご回答ありがとうございました。 また質問時の記入方法についてコメントありがとうございます。 次回以降、気を付けたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問