La sintaxis para una función pura es algo así como (1+#1+#2)&[a,b]
, que da 1+a+b
. Ahora deseo suministrar la salida de alguna función que se parece a {a,b}
a la función anterior, es decir, algo así como (1+#1+#2)&{a,b}
, pero con la sintaxis correcta, ya que obviamente eso no funciona. ¿Cómo voy a hacer esto?Lista de entradas a una función pura
Respuesta
El método más sencillo es utilizar Apply
(@@
):
In[4]:= (1 + #1 + #2) & @@ {a, b}
Out[4]= 1 + a + b
Una alternativa es '(1 + ##) & @@ {a, b}' que trabajar con cualquier longitud de la lista. –
Para proporcionar algunas alternativas, también se puede incluir el Apply
dentro de la función si es más conveniente:
f = (1 + # + #2) & @@ # &;
f @ {a, b}
1 + a + b
Opcionalmente, puede indexar piezas manualmente:
f = (1 + #[[1]] + #[[2]]) &;
Por último, es posible que ya lo saben, pero para otros la lectura de esta pregunta:
g[{x_, y_}] := 1 + x + y
g @ {a, b}
1 + a + b
+1 Siempre es un placer examinar sus soluciones. – DavidC
@David, ¡muchas gracias! –
Aquí hay una versión que es una función ordinaria (es decir, se puede utilizar corchetes) que tendrá un arbitraria lista. El Apply
se ha movido dentro de la función y la ##
significa SlotSequence
(cf _
y __
en coincidencia de patrones)
In[1]:= (1 + ##&@@ #) &[{a, b}]
(1 + ##&@@ #) &[{a, b, c, d, e}]
Out[1]= 1 + a + b
Out[2]= 1 + a + b + c + d + e
Es interesante observar que una función pura aceptará un número infinito de argumentos, y el número de vars en 'Función' o el máximo n en' # n' da la cantidad mínima de argumentos requeridos. Sin embargo, '## n' no impone ningún mínimo. – rcollyer
@rcollyer ¿estás seguro? Pruebe: '{## 4} & @@@ Array [Range, 5]' –
@Mr, impar. porque la semana pasada realicé algunos experimentos que parecían indicar que funcionó. volver al tablero de dibujo. – rcollyer
- 1. Obteniendo una lista pura de 'pyparsing.ParseResults'
- 2. ¿Por qué numCapabilities es una función pura?
- 3. diferencia entre una función virtual y una función virtual pura
- 4. Llamada de función virtual pura
- 5. Función virtual pura llamada error
- 6. ¿Cómo elegir un elemento de lista aleatorio en una función pura?
- 7. explícitamente determinar qué función pura de usar
- 8. ¿Cuál es el sentido de una función virtual pura privada?
- 9. Denominación de la función `pura` en Control.Applicative
- 10. ¿Hay alguna manera de "eliminar" una función virtual pura?
- 11. función virtual pura C++ tienen cuerpo
- 12. Downsampling el número de entradas en una lista (sin interpolación)
- 13. Multiproceso de Python una función con varias entradas
- 14. Lista personalizadaPreferencia con entradas dinámicas
- 15. Conversión de una lista de entradas a una matriz de bytes
- 16. ASMX Devolver una cadena pura
- 17. Copie una lista java con un límite de entradas
- 18. ¿Cómo agrego, digamos, n entradas de x a una lista en una sola toma?
- 19. Haskell y memoization de la función pura resulta
- 20. ¿Hay una función que tome una lista de listas de argumentos y aplique cada lista a una función determinada?
- 21. Cómo crear una ventana pura de winapi
- 22. typedef herencia de una base abstracta pura
- 23. ¿Cómo pasar una lista a una función en R?
- 24. ¿En qué circunstancias es ventajoso dar una implementación de una función virtual pura?
- 25. Descubre dinámicamente cuántas entradas tiene una función, Raqueta
- 26. sintaxis para llamar a la función aleatoria de una lista
- 27. Haskell: Asignar la función a una lista de listas
- 28. Llamar a una función con lista de argumentos en python
- 29. ¿Cómo aplicar la función a los elementos de una lista?
- 30. función/selector para filtrar entradas por valor
posible duplicado de [cómo puedo pasar parámetros almacenados en una lista a la expresión] (http: // stackoverflow .com/questions/5176430/how-can-i-pass-parameters-stored-in-a-list-to-expression) –