2009-08-08 14 views

risposta

11

Il thread è un po 'come una generalizzazione zip da altri linguaggi funzionali.

Per i casi semplici, in cui tutti gli elementi di args dal tuo esempio sono liste,

Thread[f[args]] 

è equivalente a

f @@@ Transpose[{args}] 

come mostrato nei primi due esempi nella documentazione. La grinza maggiore è quando si hanno argomenti che non sono elenchi, nel qual caso sono efficacemente curati; per esempio,

Thread[g[{a, b}, c, {d, e}, f]] 

è equivalente a

g[#1, c, #2, f]& @@@ Transpose[{{a, b}, {d, e}}] 

solito mi trovo con discussione per costruire liste di regole o elenchi di equazioni.

14

Funziona in modo simile alla funzione zip() di Python, ma in un modo leggermente più generale. Ad esempio:

In[1] := Thread[{{1, 2, 3}, {4, 5, 6}}] (* f == List *) 
Out[1] = {{1, 4}, {2, 5}, {3, 6}} 

In[2] := Thread[f[{1, 2, 3}, {4, 5, 6}]] 
Out[2] = {f[1, 4], f[2, 5], f[3, 6]} 

In[3] := Thread[f[a+b+c, d+e+f], Plus] 
Out[3] = f[a, d] + f[b, e] + f[c, f] 
Problemi correlati