プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
pythonにて、コードを作っているのですが、
分割文字がない入力文字列を1文字ずつに分割して、二次元配列に渡そうとしたのですが、以下だとlist1[1][j]のデータがループを回すごとに変わってしまいます・・・・・・。

入力値
.##..
.....
...##
#.###

while i < n:
text = input()
while j < m:
#print(x4)
list1[i+1][j+1]= text[j]
j = j + 1
print(str(i) + ":" + str(j))

i = i + 1
j = 0
print(list1[1]) #ここの結果がiのループ毎に変わってしまう。

恐らく、参照渡し? が原因かと思われます。 textをinputで変えているので、参照先が変わってしまい、おかしくなっているのだと思われます。
分割文字がない入力文字列を1文字ずつに分割して、二次元配列に渡そうとするにはどうすればいいですか? list関数を使ってもだめでした……。
よろしくお願いします。

質問者からの補足コメント

  • print(list1[1])はwhile i < n:のループの中に入っています。
    インデックスを固定しているのに、ループ毎に変わってしまいます。

      補足日時:2023/08/14 11:59

A 回答 (1件)

何がやりたいんだかさっぱり分からんのだけど、



> 分割文字がない入力文字列を1文字ずつに分割

はlist('文字列')だ。

例:
>>> list('hoge')
['h', 'o', 'g', 'e']

つまり、この時点で、

list(input())

って書けば済むだけ、なんで提示コードが何やりたいんだかサッパリ分からんけど、「なんか無駄な事を書いてる」って事だけは分かる。

> 分割文字がない入力文字列を1文字ずつに分割して、二次元配列に渡そうとするにはどうすればいいですか?

mをどう想定してるか分からんのだけど、こういう事なの?

>>> m = 3
>>> [list(input()) for i in (range(3))]
foo
bar
baz
[['f', 'o', 'o'], ['b', 'a', 'r'], ['b', 'a', 'z']]
    • good
    • 0
この回答へのお礼

有難うございます。そういう事です。勉強になりました。

お礼日時:2023/08/14 13:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!