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

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

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

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

Q&A

解決済

2回答

911閲覧

for文の中で、配列に[i]をappendする方法

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

0グッド

0クリップ

投稿2021/04/26 14:50

python

1for i in range(10): 2 trad = Image.open("drive/My Drive/mnist_dataset/" + str(i)+".jpg") 3 trad = trad.resize((10, 10)) 4 trad = np.asarray(trad) 5 #g #b #r 抽出後diffしてappend 6 trimg.append(str(i) + diff(extract(trad, 1)) + diff(extract(trad, 2)) + diff(extract(trad, 0)))

こうすると以下のエラーになるんですが、

TypeError Traceback (most recent call last)
<ipython-input-24-37fed17f8fa3> in <module>()
58 trad = np.asarray(trad)
59 #g #b #r 抽出後diffしてappend
---> 60 trimg.append(str(i) + diff(extract(trad, 1)) + diff(extract(trad, 2)) + diff(extract(trad, 0)))
61
62 print(trimg)

TypeError: can only concatenate str (not "list") to str

まぁ色々関数書いてますが結局知りたいのは、

python

1 trimg.append(str(i) + diff(extract(trad, 1)) + diff(extract(trad, 2)) + diff(extract(trad, 0)))

ここですね、この部分がエラーになります。

python

1 trimg.append(diff(extract(trad, 1)) + diff(extract(trad, 2)) + diff(extract(trad, 0)))

これだとエラーが出ません。つまり初めのdiffの前に、連番であるiを入れたいんです、どうすればいいですか。

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

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

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

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

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

guest

回答2

0

ベストアンサー

わざわざ文字列にしなくてもいいでしょう。
こうではない?

python

1trimg.append([i] + diff(extract(trad, 1)) + diff(extract(trad, 2)) # 略

連番を入れたい理由が不明ですが。

投稿2021/04/27 07:09

TakaiY

総合スコア12657

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

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

退会済みユーザー

退会済みユーザー

2021/04/27 13:14 編集

for i in range(10): trad = Image.open("drive/My Drive/mnist_dataset/" + str(i)+".jpg") trad = trad.resize((10, 10)) trad = np.asarray(trad) #g #b #r 抽出後diffしてappend。@初めにどうにかして連番[i]を入れる。 trimg.append([i] + diff(extract(trad, 1)) + diff(extract(trad, 2)) + diff(extract(trad, 0)) print(trimg) とすると、 print(trimg) ^ SyntaxError: invalid syntax とエラーになるのはなぜでしょう? ""つけても同じです。
TakaiY

2021/04/27 13:46

文法エラーですから、ご自分で確認ください。 括弧の対応が取れてないんじゃないですか?
退会済みユーザー

退会済みユーザー

2021/04/27 13:53

でも対応がとれてなければtrimng.appendの行でエラーが生じますよね?? ほぼそのままコピーさせていただいたのですが・・・。
TakaiY

2021/04/27 13:57

生じません。
guest

0

文字列と連結できるのは文字列だけです。

関数diffの返り値の型がlistなので、文字列と連結できません。
関数diffの返り値の型をstrに変換する何らかの処理を実装すれば解決できます。

投稿2021/04/26 15:47

rtgsdfsdg

総合スコア174

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

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

退会済みユーザー

退会済みユーザー

2021/04/26 16:20

print(trimg)の結果が、 [[10, 4, 2, 4, 4, 4, 4, 4, 4, 8, 10, 4, 2, 2, 6, 6, 2, 2, 4, 10, 10, 4, 2, 4, 4, 4, 4, 4, 4, 8, 10, 4, 2, 2, 6, 6, 2, 2, 4, 10, 10, 4, 2, 4, 4, 4, 4, 4, 4, 8, 10, 4, 2, 2, 6, 6, 2, 2, 4, 10], [10, 8, 5, 5, 7, 7, 8, 7, 3, 4, 10, 10, 6, 6, 1, 1, 3, 8, 9, 10, 10, 8, 6, 6, 8, 8, 8, 8, 4, 4, 10, 10, 6, 6, 1, 1, 8, 8, 10, 10, 10, 8, 5, 5, 7, 7, 7, 7, 3, 4, 10, 10, 6, 6, 1, 1, 2, 8, 9, 10], [10, 4, 3, 8, 7, 6, 6, 7, 2, 2, 10, 6, 5, 4, 3, 3, 2, 4, 8, 10, 10, 4, 3, 8, 7, 6, 6, 7, 2, 2, 10, 6, 5, 4, 3, 3, 2, 4, 8, 10, 10, 4, 3, 7, 7, 6, 6, 7, 2, 2, 10, 6, 5, 4, 3, 3, 2, 4, 7, 10], [10, 4, 2, 7, 6, 5, 7, 5, 3, 5, 10, 7, 5, 6, 4, 4, 1, 2, 5, 10, 10, 4, 2, 7, 5, 4, 7, 5, 3, 5, 10, 7, 5, 4, 4, 4, 1, 2, 5, 10, 10, 4, 2, 7, 6, 5, 7, 5, 3, 5, 10, 7, 5, 6, 4, 4, 1, 2, 5, 10], [10, 7, 6, 5, 5, 5, 2, 2, 7, 8, 10, 7, 6, 6, 6, 2, 1, 1, 8, 10, 10, 7, 6, 5, 5, 5, 1, 2, 7, 8, 9, 7, 6, 6, 6, 2, 1, 1, 8, 10, 10, 7, 6, 5, 5, 5, 2, 2, 7, 8, 10, 7, 6, 6, 6, 2, 1, 1, 8, 10], [10, 3, 8, 7, 3, 5, 7, 4, 3, 9, 10, 7, 3, 5, 5, 5, 4, 4, 6, 10, 10, 2, 7, 7, 3, 5, 7, 4, 3, 9, 10, 4, 3, 5, 6, 5, 4, 4, 6, 10, 10, 3, 7, 7, 4, 5, 7, 4, 3, 9, 10, 8, 3, 5, 4, 5, 4, 4, 6, 10], [10, 5, 5, 7, 3, 3, 5, 4, 4, 8, 10, 5, 3, 3, 5, 4, 4, 3, 7, 10, 10, 5, 5, 7, 3, 3, 5, 4, 4, 8, 10, 5, 3, 3, 5, 4, 4, 3, 7, 10, 10, 5, 5, 7, 3, 4, 5, 4, 4, 8, 10, 5, 3, 3, 5, 5, 4, 3, 7, 10], [10, 2, 4, 7, 7, 7, 7, 7, 7, 10, 10, 9, 7, 5, 4, 4, 5, 6, 8, 10, 10, 2, 4, 7, 7, 7, 7, 7, 7, 10, 10, 9, 7, 5, 4, 4, 5, 6, 8, 10, 10, 2, 4, 8, 7, 7, 7, 7, 7, 10, 10, 9, 7, 5, 4, 5, 5, 6, 8, 10], [8, 4, 4, 4, 4, 2, 5, 4, 4, 8, 10, 5, 2, 3, 4, 4, 2, 2, 5, 10, 8, 4, 4, 4, 4, 2, 5, 4, 4, 8, 10, 5, 2, 3, 4, 4, 2, 2, 5, 10, 8, 4, 4, 4, 4, 2, 4, 4, 4, 8, 10, 5, 2, 2, 4, 4, 2, 2, 5, 10], [10, 4, 2, 5, 5, 3, 4, 6, 4, 7, 10, 7, 3, 2, 4, 4, 4, 2, 4, 10, 10, 4, 2, 4, 4, 3, 4, 6, 4, 7, 10, 7, 3, 2, 4, 4, 2, 2, 4, 10, 10, 4, 2, 5, 5, 3, 4, 6, 4, 7, 10, 7, 3, 2, 4, 4, 4, 2, 4, 10]] なんですが、この初めのlist?の初めか最後に連番iを入れたいのです、入れた結果、このようなlistにしたいのですが、どうすればいいんでしょうか。
rtgsdfsdg

2021/04/26 17:28

「この初めのlist?」と「このようなlistにしたい」は、どのリストを指してますか?
退会済みユーザー

退会済みユーザー

2021/04/27 00:57

初めのリスト [10, 4, 2, 4, 4, 4, 4, 4, 4, 8, 10, 4, 2, 2, 6, 6, 2, 2, 4, 10, 10, 4, 2, 4, 4, 4, 4, 4, 4, 8, 10, 4, 2, 2, 6, 6, 2, 2, 4, 10, 10, 4, 2, 4, 4, 4, 4, 4, 4, 8, 10, 4, 2, 2, 6, 6, 2, 2, 4, 10] このようなリストにしたい [i(連番),10, 4, 2, 4, 4, 4, 4, 4, 4, 8, 10, 4, 2, 2, 6, 6, 2, 2, 4, 10, 10, 4, 2, 4, 4, 4, 4, 4, 4, 8, 10, 4, 2, 2, 6, 6, 2, 2, 4, 10, 10, 4, 2, 4, 4, 4, 4, 4, 4, 8, 10, 4, 2, 2, 6, 6, 2, 2, 4, 10]
退会済みユーザー

退会済みユーザー

2021/04/27 02:24 編集

[[0,10, 4, 2, 4, 4, 4, 4, 4, 4, 8, 10, 4, 2, 2, 6, 6, 2, 2, 4, 10, 10, 4, 2, 4, 4, 4, 4, 4, 4, 8, 10, 4, 2, 2, 6, 6, 2, 2, 4, 10, 10, 4, 2, 4, 4, 4, 4, 4, 4, 8, 10, 4, 2, 2, 6, 6, 2, 2, 4, 10], [1,10, 8, 5, 5, 7, 7, 8, 7, 3, 4, 10, 10, 6, 6, 1, 1, 3, 8, 9, 10, 10, 8, 6, 6, 8, 8, 8, 8, 4, 4, 10, 10, 6, 6, 1, 1, 8, 8, 10, 10, 10, 8, 5, 5, 7, 7, 7, 7, 3, 4, 10, 10, 6, 6, 1, 1, 2, 8, 9, 10], [2,10, 4, 3, 8, 7, 6, 6, 7, 2, 2, 10, 6, 5, 4, 3, 3, 2, 4, 8, 10, 10, 4, 3, 8, 7, 6, 6, 7, 2, 2, 10, 6, 5, 4, 3, 3, 2, 4, 8, 10, 10, 4, 3, 7, 7, 6, 6, 7, 2, 2, 10, 6, 5, 4, 3, 3, 2, 4, 7, 10]・・・ こんな感じですね、こんな感じになりますよね連番だと。 ちょっと考えたんですが、 for i in range(10): trad = Image.open("drive/My Drive/mnist_dataset/" + str(i)+".jpg") trad = trad.resize((10, 10)) trad = np.asarray(trad) #g #b #r 抽出後diffしてappend。@初めにどうにかして連番[i]を入れる。 trimg.append(diff(extract(trad, 1)) + diff(extract(trad, 2)) + diff(extract(trad, 0))) trimg.append(i) print(trimg) こうすると、各list?の後ろの連番を足せますが、これを初めに足す方法が分からないのと、 色々やってみたんですがforの後ろ2行を1行にする方法が分かりません。 また、もし自分の方法を採用するなら、 list,数,list,数・・・とかなってるわけですが(表現の仕方が分からないが)、 各list、数を1setとして、それぞれのsetに対し、まず数を取り出し、その後でlistを1個ずつ取り出していくようなコードが書きたいんですが、どうするんでしょうか・・・。
rtgsdfsdg

2021/04/27 07:53

trimg.append([i] + diff(extract(trad, 1)) + diff(extract(trad, 2)) + diff(extract(trad, 0))) で実装できます。 また、listは要素に順番がありますので連番をつける意味がない可能性があります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問