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

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

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

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

Q&A

解決済

2回答

4184閲覧

python: 構造体,リストの相互変換

donsan4090

総合スコア14

Python

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

0グッド

0クリップ

投稿2016/12/10 17:40

pythonにおける属性に関する質問です.

pose
-position
-- x
-- y
-- z
-quaternion
-- w
-- x
-- y
-- z

という変数poseがあったときに,これら3+4=7の属性(x, y, z, w, x, y, z, w)の値を取得し,リスト化する方法はありますでしょうか.
また,逆に7つの値を格納したリストがあったとして,
pose.position.x = li[0]
pose.position.y = li[1]
のように代入するのではなく,for文などでより簡潔に代入する方法はありますでしょうか.

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

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

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

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

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

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

terapyon

2016/12/13 04:59

変数poseが何かのオブジェクトなのですか?またはテキストファイルがあるのでしょうか?
donsan4090

2016/12/13 06:29

わかりにくくてすみません.うまく説明できないのですが,上記のような構造のPose, Position, Quaternionという型があり,それぞれをオブジェクトにするとpose = Pose(), position = Position(), quaternion = Quaternion()となります.x, y,z, w, x, y, zはdouble型のようなものです.
guest

回答2

0

ベストアンサー

python

1class Position: 2 x = 1 3 y = 2 4 z = 3 5 6class Quaternion: 7 w = 10 8 x = 20 9 y = 30 10 z = 40 11 12class Pose: 13 def __init__(self): 14 self.position = Position() 15 self.quaternion = Quaternion() 16 17 def data(self): 18 yield self.position.x 19 yield self.position.x 20 yield self.position.x 21 yield self.quaternion.w 22 yield self.quaternion.x 23 yield self.quaternion.y 24 yield self.quaternion.z

とあれば、以下のようにリストを取り出したいということですかね?

python

1pose = Pose() 2print(list(pose.data()))

プロパティのすべてを取得してから必要なものだけを出力する、メソッドを準備してもいいですが、過不足なく実装できるかどうか難しいところなので、明示的に取り出すメソッドを準備した方がいいと思います。

投稿2016/12/13 07:40

terapyon

総合スコア313

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

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

donsan4090

2016/12/13 07:49

>>以下のようにリストを取り出したいということですかね? まさにそういうことです. Poseに限らず様々な型に対応できる方法があればいいと思ったのですが,それぞれのケースでメソッドを準備するということになりそうですね. ありがとうございました.
terapyon

2016/12/13 08:40

別の回答にありましたが、 リフレクション を使って、プロパティを取得してからfor文で取り出す方法はありますが、オブジェクトに何が入っているかわからない状態で適当に取得すると危険も潜んでいますね。
donsan4090

2016/12/13 09:22

よく分かりました.ありがとうございました.
guest

0

変換用のメソッドや関数を定義するのが一番簡単だと思います。
リフレクションを使って頑張ればfor文を回して代入できると思いますが、簡潔な実装にはならないと思います。
一つ一つ代入していくのが結局楽でしょう。

投稿2016/12/11 02:52

carimatics

総合スコア740

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問