Sto cercando di fare in Julia cosa fa questo codice Python. (Trova tutte le coppie delle due liste il cui valore complessivo è superiore a 7.)Comprensioni e tuple delle liste in Julia
#Python
def sum_is_large(a, b):
return a + b > 7
l1 = [1,2,3]
l2 = [4,5,6]
l3 = [(a,b) for a in l1 for b in l2 if sum_is_large(a, b)]
print(l3)
non c'è 'se' per la lista comprensioni a Giulia. E se utilizzo filter(), non sono sicuro di poter passare due argomenti. Quindi il mio miglior suggerimento è questo:
#Julia
function sum_is_large(pair)
a, b = pair
return a + b > 7
end
l1 = [1,2,3]
l2 = [4,5,6]
l3 = filter(sum_is_large, [(i,j) for i in l1, j in l2])
print(l3)
Non trovo questo molto allettante. Quindi la mia domanda è, c'è un modo migliore in Julia?
Mi piacciono gli iteratori. Si può fare una cosa simile in python se si importano itertools. Tuttavia, temo di aver commesso un errore quando ho cercato di ridurre la mia domanda a un semplice esempio. Il mio problema principale è con la tupla come argomento. Possiamo fingere che la funzione sum_is_large() sia davvero piuttosto complicata e che debba usare ripetutamente le variabili a e b. C'è un modo per passare queste due variabili senza fare qualcosa come a, b = coppia? –
'a' e' b' sono indirizzabili come 'x [1]' e 'x [2]' in 'bigfunc'. Puoi anche fare 'x-> bigfunc (x ...)' e quindi definire 'bigfunc (a, b)'. Questa deviazione del codice non dovrebbe costare troppo in termini di efficienza, semmai. –
@DanGetz in python c'è [itertools] (https://docs.python.org/2/library/itertools.html) che contiene fondamentalmente iteratori simili a 'Iterators.jl' di julia. –