[過去ログ] Pythonのお勉強 Part73 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
777
(2): (ワッチョイ 82ad-aK75) 2024/08/31(土)13:22 ID:fwQH707u0(1/5)調 AAS
関数やクラスにインデックスの指す中身の値でなく“インデックス指定”を渡したいのですがうまく出来ません
こんな場合どういうような考え方があるのでしょう(タプルでインデックス数字を渡す?)

# [[0,0,0,0,0],[[0,0,0,0,0]]
alist = [[0]*5]*2

# 値ではなく箱の位置を意図してるが…
hako = alist[0][3]

def change(b):
b = 3
return

change(hako)

print(alist) # 全部0のまま

change(alist[0][4])

print(alist) # こちらも全部0

実際にはrpgゲームの様々のステートやフラグやそのセーブを管理するクラスに
alist[6][15](王さまと喋ったとか)を1にするといった仕事をさせたいと試行錯誤しています
喋る関数、戦う関数やクラスのとこから発生しだいリストを直で操作すればいいのだけど
State.change(インデックス, 1)みたく一元的にやりたいとクラスを作ってきています
目的で位置の固定されたフラグなのでメニューを開いているかState.menu(1)、State.kingtalked(1)などとしその先のクラスの関数で位置を決め撃ちするのが良いのかななどと困って考えています
779
(1): (ワッチョイ 7901-vp4l) 2024/08/31(土)14:06 ID:o+gAgvj50(1)調 AAS
>>777

ごちゃごちゃ、わからんわ
785
(1): (ワッチョイ 8601-3oMX) 2024/08/31(土)17:34 ID:mruaKbs00(1/2)調 AAS
>>777
2次元で固定ならタプルで渡す
def modify(alist, indices, new_value):
 alist[indices[0]][indices[1]] = new_value

任意の深さに対応したいならループさせる
(エラーになる状況が増えるので用途に合わせて対応が必要)
def modify(alist, indices, new_value):
 element = alist
 for i in indices[:-1]:
  element = element[i]
 element[indices[-1]] = new_value

あとalist = [[0]*5]*2 の初期化方法は要注意
alist[0][3] = 3とすると[[0, 0, 0, 3, 0], [0, 0, 0, 3, 0]]になるから
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.027s