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

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

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

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

Q&A

解決済

2回答

805閲覧

Pythonのアンパック記法についての質問

renji

総合スコア41

Python

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

0グッド

0クリップ

投稿2018/08/05 08:30

編集2018/08/05 08:34

img = cv.imread("~.img")
retval, img = cv.threshold(img, 50, 255, cv.THRESH_TOZERO)

こういったプログラムがある場合について、質問させてください。
retvalとimgの二つの変数に(img, 50, 255, cv.THRESH_TOZERO)の4つのデータを入れたい場合、
それぞれ、二つずつ(retvalにimgと50)(imgに255とcv.THRESH_TOZERO)に分けられたデータが入るのでしょうか?

imgにimgが入り、残りはretvalに入るのでしょうか?

また、
X,Y = make_blobs(n_samples=15, n_features=2, centers=2, cluster_std=0.5, shuffle=True, random_state=1)
について、

X, Y にそれぞれ、どういった配分で要素が入るのでしょうか?

この複数の変数に、要素が配分される、という表記法はPythonではよく使われるようなのですが、ほかページなどで勉強しているのですが、ルールの理解がまだ及ばず、もしよろしければ、お教えいただければ幸いです。
よろしくお願いします。

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

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

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

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

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

guest

回答2

0

retvalとimgの二つの変数に(img, 50, 255, cv.THRESH_TOZERO)の4つのデータを入れたい場合

retval及びimgにアンパック代入されるのは、関数cv.thresholdの返り値です。
引数の与え方には依存しません。

Python

1>>> def func(a, b, c, d): 2... return 99, 98 3... 4>>> a, b = func(1, 2, 3, 4) 5>>> print(a) 699 7>>> print(b) 898

make_blobsの場合も同様です。

投稿2018/08/05 08:35

LouiS0616

総合スコア35660

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

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

renji

2018/08/05 08:56

ありがとうございました。 関数の返り値が入るといまいち、分かっておりませんでした。 これからは関数の返り値という視点を持って、学んでいきたいです。 また、詳しくプログラムで説明してくださって、ありがとうございました。
guest

0

ベストアンサー

関数の仕組みがまだよくわかっていないのではないでしょうか。

引数がそのまま返ってくるという理解ですか?

cv2sklearnの関数だと思いますが、それぞれの関数で返り値のフォーマットが異なります。

参考:
画像のしきい値処理 — OpenCV-Python Tutorials 1 documentation
sklearn.datasets.make_blobs — scikit-learn 0.19.2 documentation


はじめのうちは簡単な例で考えた方が良いでしょう。ライブラリを使う前に、python自体の言語仕様を学んでください。

python

1>>> def f(): 2... return 1 3... 4>>> def f2(): 5... return 1,2 6... 7>>> a = f() 8>>> b = f2() 9>>> b 10(1, 2) 11>>> c,d = f2() 12>>> c 131 14>>> d 152 16>>> e,f,g = f2() 17Traceback (most recent call last): 18 File "<stdin>", line 1, in <module> 19ValueError: not enough values to unpack (expected 3, got 2) 20 21

投稿2018/08/05 08:41

hayataka2049

総合スコア30933

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

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

renji

2018/08/05 08:54

ありがとうございました。 Pythonの基本的な関数の部分が理解できていなかったですが、返り値が入る例を教えていただけたので、理解できました。 関数の返り値をこれから意識していきたいです。 また、参照サイトを教えてくださって、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問