Prima di offrire la mia soluzione fammi commento delle due precedenti soluzioni. Chiamiamo la soluzione magica di Joey Robert magicFunction1 e la soluzione magic di Eric2.
magicFunction1 è molto breve ed elegante. Quello che non mi piace è che se ho una lista molto grande di numeri e il primo è già più grande di 10, continuerà a fare tutto il lavoro per capire il numero più grande che non è necessario. Questo vale anche per magicFunction2
ho sviluppato le seguenti due soluzioni:
magicFunction3[lst_, val_] :=
Position[# < val & /@ lst, False, 1, 1] == {}
e
magicFunction4[lst_, val_] :=
Cases[lst, x_ /; x >= val, 1, 1] == {}
Facendo un punto di riferimento che ho trovato
In[1]:= data = Table[RandomInteger[{1, 10}], {10000000}];
In[2]:= Timing[magicFunction1[data, 10]]
Out[2]= {0.017551, False}
In[2]:= Timing[magicFunction2[data, 10]]
Out[2]= {10.0173, False}
In[2]:= Timing[magicFunction3[data, 10]]
Out[2]= {7.10192, False}
In[2]:= Timing[magicFunction4[data, 10]]
Out[2]= {0.402562, False}
Quindi la mia risposta migliore è magicFunction4, ma ancora non so perché è più lento di magicFunction1. Ignorerò anche il motivo per cui esiste una differenza di prestazioni così grande tra magicFunction3 e magicFunction4.
Grazie, buona idea. – Nope
Giusto per sillabare: 'magicFunction [lst_, val_]: = Max [lst]
dreeves