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

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

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

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

Q&A

解決済

2回答

5393閲覧

多重配列に番号を振りつける

toyadai056

総合スコア34

Python

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

0グッド

0クリップ

投稿2017/07/28 10:06

先ほどと似たような質問なのですが、
多重配列[[a][b][c][d]・・・]に
label[0 1 2 3 4 ・・・]のような番号を振り対応づけて
・・・print(0)
[a]
・・・print(1)
[b]
と表示されるようにしたいです。

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

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

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

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

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

Lhankor_Mhy

2017/07/28 10:08

補足願います。対応付ける番号には何か規則があるのでしょうか。
toyadai056

2017/07/28 10:17

特に意味はないですが、配列の一つ目は0、二つ目は1,三つめは2というように一つずつ番号を増やせて、できたらよいと考えています。
Lhankor_Mhy

2017/07/28 10:29

それは、リストの添え字と考えていいですか?
toyadai056

2017/07/28 10:38

はい、そう考えて大丈夫です。上のようにprintで表示できれば大丈夫です。
miyahan

2017/07/28 11:02

これ、やりたいことは本当に多重配列(aの中にb、bの中にc、cの中にd)なんでしょうか? リストの一要素に a,b,c,d を格納した辞書を入れたいのではないでしょうか?
_Victorique__

2017/07/28 11:10

こういうことをしたい背景を教えてもらった方が良い気がします。
toyadai056

2017/07/28 12:04

svmで学習するために配列にその配列番号を与えたいです。多重配列は[[3 5 8][6 7 2][9 4 5]]のようになっているものと思ってください
_Victorique__

2017/07/28 15:18

どうして学習するために配列番号を与えたいのか教えてください
guest

回答2

0

ベストアンサー

l = [['a'],['b'],['c'],['d']] としましょう。(質問にはせめてPythonとして意味を持つコードを書いて欲しいです)

lはlistですから、番号は元々付いていますよね?

>>> print(l[0]) ['a'] >>> print(l[1]) ['b'] >>> print(l[2]) ['c']

とすれば、"添え字の番号に対応した値"を取り出すことがそもそもlistの機能として可能です。(あなたが想定しているのがNumPyのArrayかもしれませんが、同じことです)

これを知らないということは、あなたは「配列がどういうものなのか知らないのに配列という言葉を知っている人」と推測するしかないわけです。それは実に謎な存在です。

だからこの質問を読んだ人は皆「本当はこの人はなにをしたいんだろう……?」という疑念に駆られるわけです。

で、本当はどういうことがしたいんですか??


例えば

Python

1for idx in range(l): 2 item = l[idx]

と書くと、ループの中でidx番目の要素がitemに代入されました。
このコードは分かりますか?

この時点で、インデクス番号がidxに、要素がitemに入っていますよね??

要素に対してインデクスを取得する必要がどこにありますか。リストはインデクスに対して要素を取得するという操作をおこなうんです。コードを書けばインデクスで要素を取得するという形に自然となるはずです。

なぜ、要素に対して番号を振りつけるにはどうしたらいいか、なんていう質問がでてくるのか困惑しています。


もし、現時点で

Python

1for item in l: 2 ...

というループの形で書いていて、ここで一緒にインデクス番号を取得するにはどうしたらいいんだろう? という疑問なのでしたら、

Python

1for idx, item in enumerate(l): 2 ...

と書けますし、Python的には上で書いたfor idx in range(l)の形のループよりも正着です。


そうではなくて。

例えば、

Python

1[['a', 0], ['b', 1], ['c', 2], ['d', 3]]

とか

Python

1[(['a'], 0), (['b'], 1), (['c'], 2), (['d'], 3)]

とか

Python

1{('a'):0, ('b'):1, ('c'):2, ('d'):3} # 辞書型です

というような形に変形した出力が欲しい、とかだったら、質問として納得できます。
欲しい形を書いてくください。


とにかく

今こういうコードを書いていて、この箇所こういう値を得るにはどう書けばいいのか?

とか

こういうデータがあって、こういう出力に変形したい。

とか、コードを一緒に示してもらった方が混乱が少なくてすみます。

あと、多重配列と呼んでいるのは一体なんなのでしょう? リストのリストですか? NumPyのArrayですか? コードがないからそれさえも第三者にはわからないのですよ。そんな言葉で通じるだろうなんて思わないで下さい。

投稿2017/07/28 13:04

編集2017/07/29 02:16
quickquip

総合スコア11038

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

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

toyadai056

2017/07/28 13:18

配列ごとのインデックス番号を取得することは可能なんでしょうか?
quickquip

2017/07/28 13:52

内側に入っている配列がわかっている時にそれが何番目かを取得する、前提として l = [['a'],['b'],['c'],['d']] と x = ['b'] がわかっている時に、 l の中で x は 「1番目」 の(インデクスの)場所に格納されています ということが知りたい、 つまり「取得したいのは 1 という数値」ということで合ってますか? 配列に重複がありえない=[['a'],['b'],['c'],['a']] のようなデータは扱わない、という前提でよいですか?
_Victorique__

2017/07/28 15:20

何をしたいかによると思うんですよ。質問者のやろうとしている実装と正解の実装が違う可能性が高いですよね。
miyahan

2017/07/29 06:02

なんでここまで「やりたいことを書いてくれ」と言われて、唐突に「配列ごとのインデックス番号を取得することは可能なんでしょうか?」なんてセリフがでてくるんでしょうか・・・。プログラム言語を学ぶ前に、、、いえ何でも無いです。
guest

0

python

1_print = print #参照を退避 2def print(i): 3 _print ( [ ['a'], ['b'], ['c'], ['d'] ][i] ) 4print(0) 5#['a']

ビルトイン関数の上書きをしたいんでしょうか……?

投稿2017/07/28 11:21

Lhankor_Mhy

総合スコア36115

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問