私が意図したこと:
list pop() メソッドに似た my_pop() という関数を実装します。入力としてリストを受け取り、リストから最後のオブジェクトを削除して返します。
私が思いついたもの:
# take an input of list;
# if not last item(determined by comparing index number): loop through the list and copy every item to new list
# if last item: pass
def my_pop(l):
new = []
l = list(l)
for i in l:
if l.index(i) == -1:
pass
else:
new.append(i)
return new
問題:new
実行すると、古い list の正確なコピーとしてリストが返されl
、 の最後の項目が削除されませんl
。自分のやり方がうまくいかない理由を理解できませんでした。一般的な指針は大歓迎です!ありがとうございました。
解決策:
以下の優れた回答のおかげで、うまくいかない理由がわかりましたif l.index(i) == -1
。ここに貼り付けたのは、@ jh314 の洞察に基づく同様のソリューションですが、代わりに while ループを使用しています。
# take an input of list;
# compare the index using c to determine if it's the last element in the list;
def pop(l):
n = []
l = list(l)
c = 0
while c < int(len(l)-1):
n.append(l[c])
c = c + 1
else:
pass
return n