Tengo un problema. Necesito crear una lista. Y en cada iteración necesito eliminar el tercer elemento e imprimir la lista sin el elemento eliminado.

La cosa es. Estoy tratando de hacer un algoritmo para eliminar el tercer elemento sin eliminar la función u otras funciones de lista incorporadas. En mi código cubrí las siguientes posibilidades. Si mi lista tiene menos de 3 elementos, imprimo un mensaje que dice que la lista es corta. Si mi lista tiene 3 elementos, asignaré al tercer elemento el valor del segundo elemento y así sucesivamente. Mi problema es cuando mi lista tiene más de 3 elementos.

v=[]   # list of numbers the user inputs
two=[] #list with only 2 elements
vector=[] # list with third element deleted when len(v)>3

def create_array():
    n=int(input('Digit total elements in dynamic array - '))
    for i in range(0,n):
        element=int(input('Digit element to array - '))
        v.append(element)
    return v
print(create_array())

def remove_third_element():
    for j in range(0,len(v)):
        if len(v)<3:  # if number of elements in list < 3 there is no element to delete
            print('There is no element do delete! ')
            return 0
        elif len(v)==3:
            v[2]==v[1] and v[1]==v[0]
            two=[v[0],v[1]]
            return two
        else:
            v[0]==v[1] and v[1]==v[2]

print(remove_third_element())
0
Luismaia1994 9 may. 2019 a las 16:07

4 respuestas

La mejor respuesta
elif len(v) > 3:
   ret = [];
   for i in range(len(v)):
      if(i != 2) ret.append(v[i]);
   return ret

Debería hacer el truco

Por cierto, con este método puedes eliminar tu elif len (v) == 3

También tu código:

elif len(v)==3:
        v[2]==v[1] and v[1]==v[0]
        two=[v[0],v[1]]
        return two

No funcionará porque '==' se usa como condición en python, por lo que devolverá un valor booleano y no asignará valor. ir por

v[2] = v[1]
v[1] = v[0]

En lugar de

1
colin renaud 9 may. 2019 a las 13:15

Aquí hay una forma pitónica de hacer una nueva lista sin el tercer elemento de la lista original.

new_list = old_list[:2] + old_list[3:]

old_list[:2] es la abreviatura de "hasta el 2º índice" (por lo que obtendremos los índices 0 y 1) de old_list.

old_list[3:] es la abreviatura de "desde el tercer índice hasta el final" (por lo tanto, el índice 3, 4, etc.).

Ambas listas de retorno; en python, si agrega listas, la concatenación realmente sucede.


Como ejemplo, si old_list = [1,2,3,4,5], entonces new_list[:2] será [1,2] y new_list[3:] será [4,5]. Entonces, combinar eso será [1,2,4,5].

1
dTanMan 9 may. 2019 a las 13:22
def main():
    big_list = [ x for x in range(20) ]
    while len(big_list) > 3:
        big_list =  big_list[:2] +  big_list[3:]
    print(big_list)

0
Andrew St. Pierre 9 may. 2019 a las 13:20

¡Tenga en cuenta que esta declaración: v[2]==v[1] and v[1]==v[0] no asignará valores! La operación == devuelve boolean.

Digamos que su v se ve así: v = [1, 1, 3]. Entonces v[2]==v[1] and v[1]==v[0] te da el resultado: False and True, y esto te da resultados False. Puede verificarlo si imprime esto print(v[2]==v[1] and v[1]==v[0]).

Si desea asignar valores, puede usar una declaración como esta: v[2], v[1] = v[1], v[0].

0
Relandom 9 may. 2019 a las 13:15