perl | splice() – La función versátil

En Perl , la función splice() se usa para eliminar y devolver una cierta cantidad de elementos de una array. Se puede insertar una lista de elementos en lugar de los elementos eliminados.

Sintaxis: splice(@array, offset, length, replace_list)

Parámetros:

  • @array: la array en consideración.
  • offset – Desplazamiento de eliminación de elementos.
  • longitud: número de elementos que se eliminarán a partir del desplazamiento (incluido el desplazamiento).
  • lista_reemplazo: la lista de elementos que toma el lugar de los elementos eliminados.

Ejemplo:

#!/usr/bin/perl
  
# an array of numbers from 0 to 7
@array = (0..7);                 
  
# Original array
print "Original Array: @array\n"; 
  
# splice() replaces elements from 
# 2 to 4 with a to c 
@array2 = splice(@array, 2, 3, (a..c)); 
  
# Printing the Updated Array
print("Elements of Updated \@array are @array\n");    
  
# array2 contains elements removed 
# from array i.e. 2, 3 and 4
print("Removed elements are @array2");         
Producción:

Original Array: 0 1 2 3 4 5 6 7
Elements of Updated @array are 0 1 a b c 5 6 7
Removed elements are 2 3 4

Casos con múltiples parámetros:

Caso 1: splice(@array)
Si se pasa @array pero no el resto de los parámetros, se borra todo el conjunto y se devuelven todos los elementos. Sin embargo, no se genera ningún error.

Ejemplo:

#!/usr/bin/perl
  
# an array of numbers from 0 to 7
@array = (0..7);
  
# Original Array
print "Original Array: @array\n"; 
  
# All the elements of @array are removed
@array2 = splice(@array); 
  
print("Updated Array: @array\n");#Blank Line
  
# Removed elements
print("Removed elements are: @array2");
Producción:

Original Array: 0 1 2 3 4 5 6 7
Updated Array: 
Removed elements are: 0 1 2 3 4 5 6 7

Caso 2: splice(@array, offset)
Si @array y offset se pasan sin especificar la longitud y la lista_reemplazo, todos los elementos desde el desplazamiento hasta el final se eliminan y se devuelven.

Ejemplo:

#!/usr/bin/perl
  
# an array of numbers from 0 to 7
@array = (0..7);
  
# Original Array
print "Original Array: @array\n"; 
  
# All the elements of @array starting
# from @array[3] are removed
@array2 = splice(@array, 3); 
  
print("Updated Array: @array\n");
  
# Removed elements
print("Removed elements are: @array2");
Producción:

Original Array: 0 1 2 3 4 5 6 7
Updated Array: 0 1 2
Removed elements are: 3 4 5 6 7

Caso 3: empalme(@array, desplazamiento, longitud)
Si se especifica la @array, el desplazamiento y la longitud, se elimina el número de elementos de ‘longitud’ a partir del desplazamiento.

Ejemplo:

#!/usr/bin/perl
  
# an array of numbers from 0 to 7
@array = (0..7);
  
# Original Array
print "Original Array: @array\n"; 
  
# Two elements of @array starting from
# @array[3] are removed i.e 3 and 4
@array2 = splice(@array, 3, 2); 
  
print("Updated Array: @array\n");
  
# Removed elements
print("Removed elements are: @array2");
Producción:

Original Array: 0 1 2 3 4 5 6 7
Updated Array: 0 1 2 5 6 7
Removed elements are: 3 4

Caso 4: splice(@array, offset, length, replace_list)
En este caso, el número de elementos de ‘longitud’ se elimina y se devuelve. lista_reemplazo toma su lugar.
Ejemplo:

#!/usr/bin/perl
  
# an array of numbers from 0 to 7
@array = (0..7);
  
# Original Array
print "Original Array: @array\n"; 
  
# Two elements of @array starting from
# @array[3] are removed i.e 3 and 4 and
# replaced by a list of elements i.e. (a, b)
@array2 = splice(@array, 3, 2, (a, b)); 
  
print("Updated Array: @array\n");
  
# Removed elements
print("Removed elements are: @array2");
Producción:

Original Array: 0 1 2 3 4 5 6 7
Updated Array: 0 1 2 a b 5 6 7
Removed elements are: 3 4

Nota:

  • Si no se pasa una array a splice(), se genera un error.
  • El número de elementos de la lista de reemplazo no necesita ser igual al número de elementos eliminados.

    Ejemplo:

    #!/usr/bin/perl
      
    # an array of numbers from 0 to 7
    @array = (0..7);
      
    # Original Array
    print "Original Array: @array\n"
      
    # Two elements of @array starting from
    # @array[3] are removed i.e 3 and 4 and
    # replaced by four elements i.e. (a..d)
    @array2 = splice(@array, 3, 2, (a..d)); 
      
    print("Updated Array: @array\n");
      
    # Removed elements
    print("Removed elements are: @array2");
    Producción:

    Original Array: 0 1 2 3 4 5 6 7
    Updated Array: 0 1 2 a b c d 5 6 7
    Removed elements are: 3 4
    
  • La longitud y el desplazamiento pueden ser negativos.

    Ejemplo:

    #!/usr/bin/perl
      
    # Two arrays of numbers from 0 to 7
    @arr = (0..7);
    @arr1 = (0..7);
      
    # Two elements are removed from the 
    # 3rd element from the end i.e. 5 and 6
    splice(@arr, -3, 2);
      
    # Printing First splice()
    print('splice(@arr, -3, 2): '."@arr \n");
      
    # Elements from 3 to 2nd element from 
    # the end are removed i.e. 3, 4 and 5
    splice(@arr1, 3, -2);
      
    # Printing Second splice()
    print('splice(@arr1, 3, -2): '."@arr1");
    Producción:

    splice(@arr, -3, 2): 0 1 2 3 4 7 
    splice(@arr1, 3, -2): 0 1 2 6 7
    
  • Si el desplazamiento es mayor que la longitud de la array, la lista_reemplazo se adjunta al final de @array.

    Ejemplo:

    #!/usr/bin/perl
      
    # an array of numbers from 0 to 7
    @array = (0..7);
      
    # Original Array
    print "Original Array: @array\n"
      
    # offset is greater than the 
    # length of the array.
    splice(@array, 9, 2, (a..d)); 
      
    print("Updated Array: @array\n");
    Producción:

    Original Array: 0 1 2 3 4 5 6 7
    Updated Array: 0 1 2 3 4 5 6 7 a b c d
    
empujar usando empalme()

 
La inserción de un elemento al final de una array se denomina Push.
Equivalente de push() usando splice():

Sintaxis: empalme(@array, escalar(@array), 0, lista)
Parámetros:

  • @array: la array en consideración.
  • escalar(@array)- Es la longitud de la array.
  • 0 – No elimina ningún elemento.
  • lista: la lista de elementos que se insertarán al final de la array.

La ‘lista’ se coloca al final de @array. No se eliminan/eliminan elementos.

Ejemplo:

#!/usr/bin/perl
  
# Initializing an array
@array = ('Geeks', 'for', 'Geeks.');
  
# Original Array
print "Original Array: @array\n"; 
  
# push function
splice(@array, scalar(@array), 0, ('Hello', 'There!')); 
  
# Printing the updated Array
print("Updated Array: @array\n");
Producción:

Original Array: Geeks for Geeks.
Updated Array: Geeks for Geeks. Hello There!

En el ejemplo anterior,

  • Inicialmente, @array tiene los elementos: Geeks, para Geeks.
  • escalar(@array) es la longitud de la array (OR) número de elementos en la array, que es 3.
  • Los elementos que comienzan con @array[3] deben eliminarse, pero dado que @array[3] no está presente, no se eliminará ningún elemento.
  • La lista (‘Hola’, ‘¡Ahí!’) se insertará al final de @array. Ahora, @array tiene los elementos: Geeks, para, Geeks., ¡Hola, allí!
pop usando empalme()

 
Pop se usa para eliminar y devolver el último elemento de la array

Equivalente de pop() usando splice():

Sintaxis: $pop = splice(@array, -1)
Parámetros:

  • $pop: el elemento reventado.
  • @array: la array en consideración
  • -1 – Eliminación de todos los elementos a partir del último.

>> Se elimina un elemento a partir del último elemento de la array y se devuelve a $pop.
Ejemplo:

#!/usr/bin/perl
  
# Initializing an array
@array = ('Geeks', 'for', 'Geeks.');             
  
# Original array
print "Original Array: @array\n"; 
  
# last element is removed and returned
$pop = splice(@array, -1);
  
# Printing the Updated Array
print("Updated Array: @array\n");
  
# $pop contains removed element 
# from array i.e. last element
print("Removed element is $pop");         
Producción:

Original Array: Geeks for Geeks.
Updated Array: Geeks for
Removed element is Geeks.

En el ejemplo anterior,

  • Inicialmente, @array tiene los elementos: ‘Geeks’, ‘for’, ‘Geeks’.
  • En la función splice(), se eliminan todos los elementos que comienzan e incluyen el último elemento, es decir, solo se elimina el último elemento y se devuelve a $pop.
  • Ahora, @array tiene los elementos: ‘Geeks’, ‘for’. Y, $pop tiene el elemento: ‘Geeks’.
cambio usando empalme()

 
Mover todos los elementos de una array hacia la izquierda un bloque y eliminar y devolver el primer elemento se denomina Shift.

Equivalente de shift() usando splice():

Sintaxis: $eliminado = empalme(@array, 0, 1)

Parámetros:

  • $eliminado: el elemento reventado, es decir, el primero.
  • @array: la array en consideración
  • 0 – La eliminación de los elementos comienza desde el primero.
  • 1: se eliminará un elemento a partir del primero inclusive, es decir, solo se eliminará el primer elemento y se devolverá a $eliminado

>>Un elemento que comienza e incluye el primer elemento se elimina y se devuelve a $eliminado. Todos los elementos restantes de la array se mueven automáticamente hacia la izquierda un índice.
>>Esto es similar a pop() excepto que la eliminación se lleva a cabo en el extremo opuesto.

Ejemplo:

#!/usr/bin/perl
  
# Initializing an array
@array = ('Geeks', 'for', 'Geeks.');             
  
# Original array
print "Original Array: @array\n"; 
  
# shift function 
$removed = splice(@array, 0, 1); 
  
# Printing the Updated Array
print("Updated Array: @array\n");
  
# $removed contains removed element 
# from array i.e. first element
print("Removed element is $removed");         
Producción:

Original Array: Geeks for Geeks.
Updated Array: for Geeks.
Removed element is Geeks

En el ejemplo anterior,

  • Inicialmente, @array tiene los elementos: ‘Geeks’, ‘for’, ‘Geeks’.
  • En la función splice(), se elimina un elemento del extremo izquierdo de la array.
  • Ahora, @array tiene los elementos: ‘for’, ‘Geeks’. Y, $pop tiene el elemento: ‘Geeks’.
anular el cambio usando empalme()

 
La inserción de una lista/array dada de elementos en el extremo izquierdo de una array se denomina Unshift.

Equivalente a unshift() usando splice():

Sintaxis: splice(@array, 0, 0, lista_inserción)
Parámetros:

  • @array: la array en consideración
  • 0: la inserción tiene lugar en el índice 0, es decir, al comienzo de la array.
  • 0: no se eliminan ni eliminan elementos.
  • lista_inserción: los elementos que se van a insertar.

>>Los elementos de la lista_inserción se insertan al principio de la array. Todos los elementos existentes del @array se empujan hacia la derecha para acomodar los elementos insertados.

Ejemplo:

#!/usr/bin/perl
  
# Initializing an array
@array = ('Geeks', 'for', 'Geeks.');             
  
# Original array
print "Original Array: @array\n"; 
  
@insertion_list = ('This', 'is');
  
# unshift function 
splice(@array, 0, 0, @insertion_list);
  
# Printing the Updated Array
print("Updated Array: @array\n");
Producción:

Original Array: Geeks for Geeks.
Updated Array: This is Geeks for Geeks.

En el ejemplo anterior,

  • Inicialmente, @array tiene los elementos: ‘Geeks’, ‘for’, ‘Geeks’.
  • En la función splice(), los elementos de @insertion_list se insertan al principio de @array.
  • Ahora, @array tiene los elementos: ‘This’, ‘is’, ‘Geeks, ‘for’, ‘Geeks’.

Publicación traducida automáticamente

Artículo escrito por KoushikMasavarapu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *