コードに直接移動します。
# 输入一个列表lt,判断val是否在lt中,如果在,将其删除,最后输出删除后的lt和lt的长度
def remove_element(lt, val):
k = 0
for i in range(len(lt)):
if lt[i] != val:
lt[k] = lt[i]
k += 1
return k
if __name__ == '__main__':
lt = list(map(int, input().split(' ')))
val = int(input())
k = remove_element(lt, val)
print(k)
print(' '.join(map(str, lt[:k]))) # lt[:k],从0开始截取,截取k位
このアルゴリズムは賢いです。リストをトラバースし、リスト内の各アイテムを一致するアイテムと比較し、それらが等しくない場合は、最初はk = i = 0であるため、下付き文字iのリストの値を下付き文字kのリストに割り当てます。 、これは、現在のアイテムを取り出して現在のアイテムに割り当てることを意味します。リスト[1,2,3]があり、一致するアイテムvalが2であるとすると、最初のループの後の1の位置は変更されません。 、i = 1、k = 1の場合、つまりリスト要素が2の場合、lt [i]!= valがfalseの場合、次のループに入ります。このとき、k = 1、i = 2、lt [2] != val(注:lt [2] = 2)条件が満たされている場合は、lt [k] = lt [i]を実行します。3は2の位置をカバーし、リストは[1,3,3]になります。 、ループが完了した後、k値を返し、文字列を使用してlt [:k]をインターセプトすると、インターセプトは0の位置から開始し、長さkの閉じた間隔の長さで文字列をインターセプトします。 1,3です
結果は次のとおりです。