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");
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");
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");
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");
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");
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
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");
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 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");
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’.
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");
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’.
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");
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