🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Python

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

Q&A

3回答

454閲覧

A[i][2]をA[i][3]にしたい

majimurishineyo

総合スコア2

Python 3.x

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Python

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

0グッド

0クリップ

投稿2020/12/01 03:13

編集2020/12/01 03:40

Pythonで予めある2次元リストに下記のように新たな要素を入れる方法がわからないです、ネットに書いてあるappendやextendなどを使いましたがそれでは出来ませんでした。

例)
a=[[1,2,3,4][6,7,8,9]]→a=[[1,2,3,4,5][6,7,8,9,0]]
この場合多分左だと,a[0][4]を調べるとout of range とでますが、右だと5って出てきますよね……そういうことです(伝われ)

えらーでは出ないんです、出力が違うんです。appendもextendも使うと、例えば元が[[0,1,2,3][4,5,6,7]]だとしたら、[[0,1,2,3][4,5,6,7][0,0]]となります。本当は[[0,1,2,3,0][4,5,6,7,0]]にしたいのに。
そもそも配列同士を合体させたいけどふつうに+を使うと質問通りの記述やなくて上のような感じになってしまいます。
A=[[0,1,2,3][4,5,6,7]],B=[0,0]
このABふたつを合体させて[[0,1,2,3,0][4,5,6,7,0]]にしたいんです。

今insert使ってみたのですがいまいち使い方かわからなかったので質問しました。
c=[[0 1 2 3][4 5 6 7]]
b=[list(c)]
a=[0 0]
N=len(b)
for i in range(N):
b[i].insert(a[i],3)

list indices must be integers or slices not strとでます。

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

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

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

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

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

y_waiwai

2020/12/01 03:18

> ネットに書いてあるappendやextendなどを使いましたがそれでは出来ませんでした。 どういうふうにそれを使って、どういうふうにうまくいかないんでしょう。 エラーが出るならエラーメッセージを提示しましょう
majimurishineyo

2020/12/01 03:25

えらーでは出ないんです、出力が違うんです。appendもextendも使うと、例えば元が[[0,1,2,3][4,5,6,7]]だとしたら、[[0,1,2,3][4,5,6,7][0,0]]となります。本当は[[0,1,2,3,0][4,5,6,7,0]]にしたいのに。 あとは、そもそも配列同士を合体させたいけどふつうに+を使うと質問通りの記述やなくて上のような感じになってしまいます。 A=[[0,1,2,3][4,5,6,7]],B=[0,0] このABふたつを合体させて[[0,1,2,3,0][4,5,6,7,0]]にしたい感じです……。伝わりますかね。
y_waiwai

2020/12/01 03:29

それ、やり方が間違ってます どういうふうにやったのか質問文に追記しましょう
majimurishineyo

2020/12/01 03:31

そのやり方を教えてもらいたい……が質問内容の場合も書かないといけないのでしょうか
y_waiwai

2020/12/01 03:34

自分がどう間違ってるのかを教えてもらいたいんじゃなくて、とにかく教えろって話ですか。 なんだかねえ。。
majimurishineyo

2020/12/01 03:42

ちなみにどう間違えたかは追加で書いときました、これで満足ですか?
guest

回答3

0

majimurishineyoさんの抱える問題は、処理の方法ではなく、pythonのリストがどういうものであるかが良くわかっていないことだと思います。

[[1,2,3,4][6,7,8,9]]のことを2次元リストだとお考えのようですが、pythonには2次元リストというものはありません。しかも、[[1,2,3,4][6,7,8,9]]という書き方は文法エラーです。

python

1>>> [[1,2,3,4][6,7,8,9]] 2>>> a=[[1,2,3,4][6,7,8,9]] 3<stdin>:1: SyntaxWarning: list indices must be integers or slices, not tuple; perhaps you missed a comma? 4Traceback (most recent call last): 5 File "<stdin>", line 1, in <module> 6TypeError: list indices must be integers or slices, not tuple

正しいのは間にコンマをつけた以下の形です。

python

1>>> a=[[1,2,3,4],[6,7,8,9]] 2>>> print(a) 3[[1, 2, 3, 4], [6, 7, 8, 9]]

これはpythonでは2次元リストとは呼びません。pythonでは、これをふたつのリストを要素とするリストと呼びます。この場合のふたつのリストとは、[1, 2, 3, 4]と[6, 7, 8, 9]です。

[[1,2,3,4],[6,7,8,9]]がふたつの要素を持っていることは、以下のように確認できます。

python

1>>> a=[[1,2,3,4],[6,7,8,9]] 2>>> print(len(a)) 32 4>>> print(a[0]) 5[1, 2, 3, 4] 6>>> print(a[1]) 7[6, 7, 8, 9]

ここで、a.appendとかa.extendを使うということは、ふたつの要素を持つリストであるaの最後に何かを付け加えることなので、その結果は三つあるいはそれ以上の要素を持つことです。もともとの二つの要素であるa[0]つまり[1, 2, 3, 4]とかa[1]つまり[6, 7, 8, 9]は変化しません。
リストaのメソッドであるa.appendやa.expandにできることはaに関することであって、aの要素に関することではありません。

もしも、リストのメソッドがリストの要素に影響させることができるなら[1,2,3,4] + [6,7,8,9] の結果が [7, 9, 11, 13]になるのでないかと期待するひともいるでしょう。これを実行してみると、

python

1>>> print([1,2,3,4] + [6,7,8,9]) 2[1, 2, 3, 4, 6, 7, 8, 9]

期待と違っていますね。

a[0]を変化させたければ、a[0].appendとかa[0].extendを使わなければならないのです。

投稿2020/12/01 08:02

ppaul

総合スコア24670

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

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

0

変更したいのは、a[0]のリスト(1次元)とa[1]のリストなので、

Python

1a=[[1,2,3,4], [6,7,8,9]] 2a[0].append(5) # appendなら要素そのものを追加 3a[1].extend([10]) # extendなら、リスト中の要素を追加 4print(a) 5# [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]

のようにしてください。

補足: 2つのリストの要素をそれぞれ結合したいのなら、それを質問に書かないといけません

Python

1a = [[1, 2, 3, 4], [6, 7, 8, 9]] 2b = [5, 10] 3 4for i, lst in enumerate(a): 5 lst.append(b[i]) 6 7print(a) 8# [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]

投稿2020/12/01 03:32

編集2020/12/01 03:44
Daregada

総合スコア11990

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

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

majimurishineyo

2020/12/01 03:55

ありがとうございます!自分の場合ただの整数じゃなくて配列に格納されているやつを追加するのでループなりなんなり使ってやってみます……
guest

0

書いていらっしゃるコードを前提にすると、こんな感じですね

c = [[0,1,2,3],[4,5,6,7]]
N = len(c)

for i in range(N):
c[i].insert(len(c[i]),3)

print(c)

投稿2020/12/01 07:00

kenics

総合スコア179

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問