Ir directamente al código:
# 输入一个列表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位
Este algoritmo es ingenioso: recorre la lista, compara cada elemento de la lista con el elemento coincidente y, si no son iguales, asigna el valor de la lista con el subíndice i a la lista con el subíndice k, porque inicialmente k=i= 0 , lo que significa sacar el elemento actual y asignarlo al elemento actual. Supongamos que hay una lista [1,2,3] y el valor del elemento coincidente es 2, entonces la posición de 1 después del primer ciclo no cambia , cuando i=1, k=1 , es decir, cuando el elemento de la lista es 2, lt[i]!=val es falso, ingrese al siguiente bucle, en este momento k=1, i=2, lt[2] !=val (Nota: lt[2]= 2) Si se cumplen las condiciones, ejecute lt[k]=lt[i], 3 cubrirá la posición de 2 y la lista se convertirá en [1,3,3] , una vez que se completa el ciclo, devuelve el valor k y luego usa la cadena para interceptar lt [:k], la intercepción comienza desde la posición 0 e intercepta la cadena con la longitud del intervalo cerrado de longitud k, por lo que es 1,3
Los resultados son los siguientes: