私はいくつかの助けが必要です、私は関数を使用してリストを操作する必要があります私が書いたいくつかのコードがあります。私が持っている問題は、メインのコーディングで使用するためにこの操作リストを保持することです。例えば、私はチケットの列に並んでいる4人の人の名前が入ったリストを作成し、このリストを3行目の行を削除する関数に入力しました。これは、関数の外で操作できるようにする新しいリストを作成します。これまでのコードはここまでです関数を使って変数を変更した後に、リスト(リスト)を更新したリストで更新するにはどうすればよいですか?
def aLeave(aList,usrstr):
tempq = []
idx = 0
found = False
while idx < len(aList) and not found: #This section works out the index
if aList[idx] == usrstr: # of the user string that needs removed
found = True # from the queue list.
else:
idx = idx + 1
if found:
for i in range(len(aList)): #This sections takes the index previously
if i == idx: #found and uses it to create a new list
continue #without the element the user has requested to be removed
tempq.append(aList[i])
aList = tempq
print(aList)
return aList
aList = ["john","mark","pete","dave"]
aLeave(aList,input("what do you want to remove"))
print (aList)
ご協力いただければ幸いです。
おかげで(機能が「aLeave」と呼ばれる)
'aList'は関数内の*ローカル変数*です。それに代入すると、グローバル 'aList'は変更されません。関数の先頭に 'global aList'を使うことができますが、それは悪いデザインです。むしろ、リストを返すだけでよいのです。しかし、 'aList = aLeave(aList、input( '...'))'のようなことをしなければなりません。そうでなければ戻り値は何にも割り当てられず、参照されずにガベージコレクションされます。あなたは 'tempq'を返すだけで、あなたの関数に' aList = tempq'を残すこともできます。 –
また、実際に行っていることを達成するために2つのループを使用する必要はありません。ただ、 'x for aList:if x!= usrstr:tempq.append(x)' –
ありがとう@ juanpa.arrivillaga私はコードを書いた後、もっと簡単にできることに気付きました。私はあなたの提案を試みます。 – kingpete84