stringtranslate.com

Añadir

En programación informática , appendes la operación de concatenar listas enlazadas o matrices en algunos lenguajes de programación de alto nivel .

Ceceo

AppendTiene su origen en el lenguaje de programación Lisp . El appendprocedimiento toma cero o más listas (enlazadas) como argumentos y devuelve la concatenación de estas listas.

( añadir ' ( 1 2 3 ) ' ( a b ) ' () ' ( 6 )) ;Salida: (1 2 3 ab 6)       

Dado que el appendprocedimiento debe copiar completamente todos sus argumentos excepto el último, tanto su complejidad temporal como espacial son O( n ) para una lista de elementos. Por lo tanto, puede ser una fuente de ineficiencia si se utiliza de manera imprudente en el código.

El nconcprocedimiento (llamado append!en Scheme ) realiza la misma función que append, pero de forma destructiva : altera el cdr de cada argumento (excepto el último), apuntándolo a la siguiente lista.

Implementación

Appendse puede definir fácilmente de forma recursiva en términos de cons. La siguiente es una implementación simple en Scheme, para solo dos argumentos:

( definir agregar ( lambda ( ls1 ls2 ) ( si ( nulo? ls1 ) ls2 ( cons ( coche ls1 ) ( agregar ( cdr ls1 ) ls2 )))))               

La función de anexar también se puede implementar usando fold-right:

( definir append ( lambda ( a b ) ( fold-right cons b a )))        

Otros idiomas

Después de Lisp, otros lenguajes de programación de alto nivel que utilizan listas enlazadas como estructuras de datos primitivas han adoptado un operador append. Para añadir listas, como operador , Haskell utiliza ++, OCaml utiliza @.

Otros lenguajes utilizan los símbolos +o para concatenar de forma no destructiva una cadena , lista o matriz. ++

Prólogo

El lenguaje de programación lógica Prolog cuenta con un predicado incorporado append, que se puede implementar de la siguiente manera:

añadir ([], Ys , Ys ). añadir ([ X | Xs ], Ys ,[ X | Zs ])  :-  añadir ( Xs , Ys , Zs ).

Este predicado se puede utilizar para agregar, pero también para separar listas.

 ?-  añadir ( L , R ,[ 1 , 2 , 3 ]).

produce las soluciones:

L = [], R = [1, 2, 3] ;L = [1], R = [2, 3] ;L = [1, 2], R = [3] ;L = [1, 2, 3], R = []

Miranda

En Miranda , este pliegue a la derecha , de Hughes (1989:5-6), tiene la misma semántica (por ejemplo) que la implementación de Scheme anterior, para dos argumentos.

añadir ab = reducir cons ba

Donde reduce es el nombre de Miranda para fold , y cons construye una lista a partir de dos valores o listas.

Por ejemplo,

añadir [1,2] [3,4] = reducir cons [3,4] [1,2] = (reducir cons [3,4]) (cons 1 (cons 2 nulo)) = contras 1 (contras 2 [3,4])) (reemplazando cons por cons y nil por [3,4]) = [1,2,3,4]

Haskell

En Haskell , este pliegue a la derecha tiene el mismo efecto que la implementación de Scheme anterior:

añadir :: [ a ] ​​-> [ a ] ​​-> [ a ] ​​añadir xs ys = foldr ( : ) ys xs             

Esto es esencialmente una reimplementación del operador de Haskell ++.

Perl

En Perl , la función push es equivalente al método append y se puede utilizar de la siguiente manera.

mi @lista ; empujar @lista , 1 ; empujar @lista , 2 , 3 ;      

El resultado final es una lista que contiene [1, 2, 3]

La función unshift agrega elementos al principio de una lista, en lugar de al final.

mi @lista ; anular desplazamiento @lista , 1 ; anular desplazamiento @lista , 2 , 3 ;      

El resultado final es una lista que contiene [2, 3, 1]

Al abrir un archivo, utilice el modo ">>" para agregar en lugar de sobrescribir.

abrir ( mi $fh , '>>' , "/algún/archivo.txt" ); imprimir $fh "Algún texto nuevo\n" ; cerrar $fh ;      

Tenga en cuenta que al abrir y cerrar identificadores de archivos, siempre se debe verificar el valor de retorno.

Pitón

En Python , utilice el método de lista extendo los operadores infijos +y +=para agregar listas.

>>> l  =  [ 1 ,  2 ] >>> l . extender ([ 3 ,  4 ,  5 ]) >>> l [1, 2, 3, 4, 5] >>> l  +  [ 6 ,  7 ] [1, 2, 3, 4, 5, 6, 7]

No confunda con el método de lista append, que agrega un solo elemento a una lista:

>>> l  =  [ 1 ,  2 ] >>> l . agregar ( 3 ) >>> l [1, 2, 3]

Intento

En Bash, la redirección de anexo es el uso de ">>" para agregar un flujo a algo, como en la siguiente serie de comandos de shell:

echo  Hola  mundo!  >texto ; echo Adiós mundo! >>texto ; gato texto      

El flujo "¡Adiós mundo!" se añade al archivo de texto escrito en el primer comando. El ";" implica la ejecución de los comandos dados en orden, no simultáneamente. Por lo tanto, el contenido final del archivo de texto es:

¡Hola mundo! ¡Adiós mundo!

Referencias