Trước khi đưa ra giải pháp của tôi để cho tôi nhận xét hai giải pháp trước. Cho phép gọi giải pháp magicFunction1 của Joey Robert và giải pháp magicFunction2 của Eric.
magicFunction1 rất ngắn và thanh lịch. Những gì tôi không thích về nó là nếu tôi có một danh sách rất lớn các con số và một trong những đầu tiên đã lớn hơn 10 nó vẫn sẽ làm tất cả các công việc của việc tìm ra số lượng lớn nhất mà không cần thiết. Điều này cũng áp dụng cho magicFunction2
tôi đã phát triển hai giải pháp sau:
magicFunction3[lst_, val_] :=
Position[# < val & /@ lst, False, 1, 1] == {}
và
magicFunction4[lst_, val_] :=
Cases[lst, x_ /; x >= val, 1, 1] == {}
Làm một chuẩn mực tôi thấy
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}
Vì vậy, câu trả lời tốt nhất của tôi là magicFunction4, nhưng tôi vẫn không biết tại sao nó chậm hơn magicFunction1. Tôi cũng bỏ qua lý do tại sao có một sự khác biệt hiệu suất lớn như vậy giữa magicFunction3 và magicFunction4.
Cảm ơn, ý tưởng hay. – Nope
Chỉ cần đánh vần nó ra: 'magicFunction [lst_, val_]: = Max [lst]
dreeves