How to check is there any negative term in a large list?Issue with very large lists in MathematicaHow to check if all the members of list lies in specific rangeQuery Dataset to check if row contains any from a set of valuesDeleting any list that contains a negative numberDefining a function that detects square matricesHow to use Contains functions on matrices?Ordering real numeric quantitiescount the pairs in a set of DataSpeed up Flatten[] of a large nested listHow to check expression depends on symbol in a particular way

Proof of work - lottery approach

Why, precisely, is argon used in neutrino experiments?

How did Doctor Strange see the winning outcome in Avengers: Infinity War?

Is expanding the research of a group into machine learning as a PhD student risky?

Roman Numeral Treatment of Suspensions

What is the difference between "behavior" and "behaviour"?

How to write papers efficiently when English isn't my first language?

Tiptoe or tiphoof? Adjusting words to better fit fantasy races

Do the temporary hit points from the Battlerager barbarian's Reckless Abandon stack if I make multiple attacks on my turn?

Purchasing a ticket for someone else in another country?

What is the intuitive meaning of having a linear relationship between the logs of two variables?

How to check is there any negative term in a large list?

Sort a list by elements of another list

How does it work when somebody invests in my business?

Gears on left are inverse to gears on right?

Method to test if a number is a perfect power?

How does buying out courses with grant money work?

Is the destination of a commercial flight important for the pilot?

Is HostGator storing my password in plaintext?

How do I find the solutions of the following equation?

How long to clear the 'suck zone' of a turbofan after start is initiated?

Pre-amplifier input protection

I'm in charge of equipment buying but no one's ever happy with what I choose. How to fix this?

How to run a prison with the smallest amount of guards?



How to check is there any negative term in a large list?


Issue with very large lists in MathematicaHow to check if all the members of list lies in specific rangeQuery Dataset to check if row contains any from a set of valuesDeleting any list that contains a negative numberDefining a function that detects square matricesHow to use Contains functions on matrices?Ordering real numeric quantitiescount the pairs in a set of DataSpeed up Flatten[] of a large nested listHow to check expression depends on symbol in a particular way













7












$begingroup$


I want to check if a data set of size $10^10$ contains any non-positive elements. Positive[Name of dataset] returns a list of True and False of length $10^10$. I want only a single True if all terms of that dataset are positive and False otherwise.










share|improve this question









New contributor




a b is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$







  • 3




    $begingroup$
    VectorQ[list, Positive]?
    $endgroup$
    – J. M. is slightly pensive
    11 hours ago






  • 1




    $begingroup$
    Use Apply as in And @@ Positive[list]
    $endgroup$
    – Bob Hanlon
    11 hours ago










  • $begingroup$
    How do you want to deal with terms that are exactly zero? Do you need all terms to be positive (use Positive), or do you need all terms to be zero or positive (use NonNegative)?
    $endgroup$
    – Roman
    11 hours ago















7












$begingroup$


I want to check if a data set of size $10^10$ contains any non-positive elements. Positive[Name of dataset] returns a list of True and False of length $10^10$. I want only a single True if all terms of that dataset are positive and False otherwise.










share|improve this question









New contributor




a b is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$







  • 3




    $begingroup$
    VectorQ[list, Positive]?
    $endgroup$
    – J. M. is slightly pensive
    11 hours ago






  • 1




    $begingroup$
    Use Apply as in And @@ Positive[list]
    $endgroup$
    – Bob Hanlon
    11 hours ago










  • $begingroup$
    How do you want to deal with terms that are exactly zero? Do you need all terms to be positive (use Positive), or do you need all terms to be zero or positive (use NonNegative)?
    $endgroup$
    – Roman
    11 hours ago













7












7








7


2



$begingroup$


I want to check if a data set of size $10^10$ contains any non-positive elements. Positive[Name of dataset] returns a list of True and False of length $10^10$. I want only a single True if all terms of that dataset are positive and False otherwise.










share|improve this question









New contributor




a b is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$




I want to check if a data set of size $10^10$ contains any non-positive elements. Positive[Name of dataset] returns a list of True and False of length $10^10$. I want only a single True if all terms of that dataset are positive and False otherwise.







list-manipulation expression-test






share|improve this question









New contributor




a b is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




a b is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited 7 hours ago









mjw

1,04110




1,04110






New contributor




a b is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked 12 hours ago









a ba b

361




361




New contributor




a b is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





a b is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






a b is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







  • 3




    $begingroup$
    VectorQ[list, Positive]?
    $endgroup$
    – J. M. is slightly pensive
    11 hours ago






  • 1




    $begingroup$
    Use Apply as in And @@ Positive[list]
    $endgroup$
    – Bob Hanlon
    11 hours ago










  • $begingroup$
    How do you want to deal with terms that are exactly zero? Do you need all terms to be positive (use Positive), or do you need all terms to be zero or positive (use NonNegative)?
    $endgroup$
    – Roman
    11 hours ago












  • 3




    $begingroup$
    VectorQ[list, Positive]?
    $endgroup$
    – J. M. is slightly pensive
    11 hours ago






  • 1




    $begingroup$
    Use Apply as in And @@ Positive[list]
    $endgroup$
    – Bob Hanlon
    11 hours ago










  • $begingroup$
    How do you want to deal with terms that are exactly zero? Do you need all terms to be positive (use Positive), or do you need all terms to be zero or positive (use NonNegative)?
    $endgroup$
    – Roman
    11 hours ago







3




3




$begingroup$
VectorQ[list, Positive]?
$endgroup$
– J. M. is slightly pensive
11 hours ago




$begingroup$
VectorQ[list, Positive]?
$endgroup$
– J. M. is slightly pensive
11 hours ago




1




1




$begingroup$
Use Apply as in And @@ Positive[list]
$endgroup$
– Bob Hanlon
11 hours ago




$begingroup$
Use Apply as in And @@ Positive[list]
$endgroup$
– Bob Hanlon
11 hours ago












$begingroup$
How do you want to deal with terms that are exactly zero? Do you need all terms to be positive (use Positive), or do you need all terms to be zero or positive (use NonNegative)?
$endgroup$
– Roman
11 hours ago




$begingroup$
How do you want to deal with terms that are exactly zero? Do you need all terms to be positive (use Positive), or do you need all terms to be zero or positive (use NonNegative)?
$endgroup$
– Roman
11 hours ago










4 Answers
4






active

oldest

votes


















8












$begingroup$

Alternate solution:



list = RandomReal[1, 10^6];
Min[list] >= 0





share|improve this answer









$endgroup$








  • 2




    $begingroup$
    ...i.e. NonNegative[Min[list]].
    $endgroup$
    – J. M. is slightly pensive
    9 hours ago






  • 1




    $begingroup$
    Very good solution! This avoids lists of Booleans and hence allows for vectorization. (Boolean arrays cannot be packed.)
    $endgroup$
    – Henrik Schumacher
    8 hours ago










  • $begingroup$
    This is about 100 times faster than any of the other solutions. Impressive!
    $endgroup$
    – Roman
    5 hours ago


















7












$begingroup$

Since you have a very large list, you should look at the timing



list = RandomReal[1, 10^6];

(And @@ Positive[list]) // AbsoluteTiming (* Hanlon *)

(* 0.050573, True *)

VectorQ[list, Positive] // AbsoluteTiming (* J.M. *)

(* 0.261642, True *)

(AnyTrue[list, Negative] // Not) // AbsoluteTiming (* Morbo *)

(* 0.324062, True *)

And @@ (list /. x_?Negative -> False,
x_?Positive -> True) // AbsoluteTiming (* Alrubaie *)

(* 1.00664, True *)


EDIT: As suggested by mjw, encountering a nonpositive value early in the list significantly alters the results.



list2 = ReplacePart[list, 1000 -> -1];

(And @@ Positive[list2]) // AbsoluteTiming (*Hanlon*)

(* 0.277642, False *)

VectorQ[list2, Positive] // AbsoluteTiming (*J.M.*)

(* 0.000223, False *)

(AnyTrue[list2, Negative] // Not) // AbsoluteTiming (*Morbo*)

(* 0.000262, False *)

And @@ (list2 /. x_?Negative -> False,
x_?Positive -> True) // AbsoluteTiming (*Alrubaie*)

(* 1.43026, False *)





share|improve this answer











$endgroup$












  • $begingroup$
    Looks like your method is five times faster than the next best! Can you give some insight into why this is? Thanks!
    $endgroup$
    – mjw
    10 hours ago






  • 1




    $begingroup$
    Also, and I guess this depends on the probability of any entry being negative, it may make sense for the algorithm to stop as soon as it finds a negative (or non-positive) element in the list.
    $endgroup$
    – mjw
    10 hours ago






  • 1




    $begingroup$
    @mjw, And[] does short-circuit evaluation.
    $endgroup$
    – J. M. is slightly pensive
    10 hours ago






  • 1




    $begingroup$
    @Bob, Thank you for your edit. Why, though, does it take longer for your method to work when there is a negative entry? I would have thought that in each case, it would take the same amount of time to go through the whole list.
    $endgroup$
    – mjw
    10 hours ago






  • 1




    $begingroup$
    @Roman, I do not believe that any lazy evaluation is being done. My comment was more to point out that an evaluation like And[True, True, False, True, True, ... True] will finish at once (and similar remarks apply for Or[]). Perhaps one can judiciously use Catch[]/Throw[]if an early-return test for long lists is desired.
    $endgroup$
    – J. M. is slightly pensive
    9 hours ago


















3












$begingroup$

Ah, maybe this is too simple, but works for exactly what you're doing:



data = Table[RandomReal[-1,1],i,1,1000];
AnyTrue[data,Negative] // Not
(*False*)

data2 = Table[RandomReal[], i, 1, 10^2];
AnyTrue[data2, Negative] // Not
(*True*)





share|improve this answer











$endgroup$












  • $begingroup$
    AllTrue[data, Positive] to get the sign right. Or use Not on your solution.
    $endgroup$
    – Roman
    11 hours ago










  • $begingroup$
    @Roman - the poster is using AnyTrue not AllTrue
    $endgroup$
    – Bob Hanlon
    11 hours ago






  • 1




    $begingroup$
    Yes @BobHanlon . In order to invert his solution to what the OP wants you have to either Not@AnyTrue[data,Negative] or (simpler) AllTrue[data,Positive] or AllTrue[data,NonNegative].
    $endgroup$
    – Roman
    10 hours ago











  • $begingroup$
    ah, signs are reversed, missed that part. I updated the code to reflect questioners exact question.
    $endgroup$
    – morbo
    10 hours ago


















2












$begingroup$

list = 1, 2, 3, 4, -5, -6, -7;

list /. x_?Negative -> True, x_?Positive -> False





share|improve this answer









$endgroup$












    Your Answer





    StackExchange.ifUsing("editor", function ()
    return StackExchange.using("mathjaxEditing", function ()
    StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
    StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
    );
    );
    , "mathjax-editing");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "387"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );






    a b is a new contributor. Be nice, and check out our Code of Conduct.









    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f194043%2fhow-to-check-is-there-any-negative-term-in-a-large-list%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    4 Answers
    4






    active

    oldest

    votes








    4 Answers
    4






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    8












    $begingroup$

    Alternate solution:



    list = RandomReal[1, 10^6];
    Min[list] >= 0





    share|improve this answer









    $endgroup$








    • 2




      $begingroup$
      ...i.e. NonNegative[Min[list]].
      $endgroup$
      – J. M. is slightly pensive
      9 hours ago






    • 1




      $begingroup$
      Very good solution! This avoids lists of Booleans and hence allows for vectorization. (Boolean arrays cannot be packed.)
      $endgroup$
      – Henrik Schumacher
      8 hours ago










    • $begingroup$
      This is about 100 times faster than any of the other solutions. Impressive!
      $endgroup$
      – Roman
      5 hours ago















    8












    $begingroup$

    Alternate solution:



    list = RandomReal[1, 10^6];
    Min[list] >= 0





    share|improve this answer









    $endgroup$








    • 2




      $begingroup$
      ...i.e. NonNegative[Min[list]].
      $endgroup$
      – J. M. is slightly pensive
      9 hours ago






    • 1




      $begingroup$
      Very good solution! This avoids lists of Booleans and hence allows for vectorization. (Boolean arrays cannot be packed.)
      $endgroup$
      – Henrik Schumacher
      8 hours ago










    • $begingroup$
      This is about 100 times faster than any of the other solutions. Impressive!
      $endgroup$
      – Roman
      5 hours ago













    8












    8








    8





    $begingroup$

    Alternate solution:



    list = RandomReal[1, 10^6];
    Min[list] >= 0





    share|improve this answer









    $endgroup$



    Alternate solution:



    list = RandomReal[1, 10^6];
    Min[list] >= 0






    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered 9 hours ago









    sakrasakra

    2,6581428




    2,6581428







    • 2




      $begingroup$
      ...i.e. NonNegative[Min[list]].
      $endgroup$
      – J. M. is slightly pensive
      9 hours ago






    • 1




      $begingroup$
      Very good solution! This avoids lists of Booleans and hence allows for vectorization. (Boolean arrays cannot be packed.)
      $endgroup$
      – Henrik Schumacher
      8 hours ago










    • $begingroup$
      This is about 100 times faster than any of the other solutions. Impressive!
      $endgroup$
      – Roman
      5 hours ago












    • 2




      $begingroup$
      ...i.e. NonNegative[Min[list]].
      $endgroup$
      – J. M. is slightly pensive
      9 hours ago






    • 1




      $begingroup$
      Very good solution! This avoids lists of Booleans and hence allows for vectorization. (Boolean arrays cannot be packed.)
      $endgroup$
      – Henrik Schumacher
      8 hours ago










    • $begingroup$
      This is about 100 times faster than any of the other solutions. Impressive!
      $endgroup$
      – Roman
      5 hours ago







    2




    2




    $begingroup$
    ...i.e. NonNegative[Min[list]].
    $endgroup$
    – J. M. is slightly pensive
    9 hours ago




    $begingroup$
    ...i.e. NonNegative[Min[list]].
    $endgroup$
    – J. M. is slightly pensive
    9 hours ago




    1




    1




    $begingroup$
    Very good solution! This avoids lists of Booleans and hence allows for vectorization. (Boolean arrays cannot be packed.)
    $endgroup$
    – Henrik Schumacher
    8 hours ago




    $begingroup$
    Very good solution! This avoids lists of Booleans and hence allows for vectorization. (Boolean arrays cannot be packed.)
    $endgroup$
    – Henrik Schumacher
    8 hours ago












    $begingroup$
    This is about 100 times faster than any of the other solutions. Impressive!
    $endgroup$
    – Roman
    5 hours ago




    $begingroup$
    This is about 100 times faster than any of the other solutions. Impressive!
    $endgroup$
    – Roman
    5 hours ago











    7












    $begingroup$

    Since you have a very large list, you should look at the timing



    list = RandomReal[1, 10^6];

    (And @@ Positive[list]) // AbsoluteTiming (* Hanlon *)

    (* 0.050573, True *)

    VectorQ[list, Positive] // AbsoluteTiming (* J.M. *)

    (* 0.261642, True *)

    (AnyTrue[list, Negative] // Not) // AbsoluteTiming (* Morbo *)

    (* 0.324062, True *)

    And @@ (list /. x_?Negative -> False,
    x_?Positive -> True) // AbsoluteTiming (* Alrubaie *)

    (* 1.00664, True *)


    EDIT: As suggested by mjw, encountering a nonpositive value early in the list significantly alters the results.



    list2 = ReplacePart[list, 1000 -> -1];

    (And @@ Positive[list2]) // AbsoluteTiming (*Hanlon*)

    (* 0.277642, False *)

    VectorQ[list2, Positive] // AbsoluteTiming (*J.M.*)

    (* 0.000223, False *)

    (AnyTrue[list2, Negative] // Not) // AbsoluteTiming (*Morbo*)

    (* 0.000262, False *)

    And @@ (list2 /. x_?Negative -> False,
    x_?Positive -> True) // AbsoluteTiming (*Alrubaie*)

    (* 1.43026, False *)





    share|improve this answer











    $endgroup$












    • $begingroup$
      Looks like your method is five times faster than the next best! Can you give some insight into why this is? Thanks!
      $endgroup$
      – mjw
      10 hours ago






    • 1




      $begingroup$
      Also, and I guess this depends on the probability of any entry being negative, it may make sense for the algorithm to stop as soon as it finds a negative (or non-positive) element in the list.
      $endgroup$
      – mjw
      10 hours ago






    • 1




      $begingroup$
      @mjw, And[] does short-circuit evaluation.
      $endgroup$
      – J. M. is slightly pensive
      10 hours ago






    • 1




      $begingroup$
      @Bob, Thank you for your edit. Why, though, does it take longer for your method to work when there is a negative entry? I would have thought that in each case, it would take the same amount of time to go through the whole list.
      $endgroup$
      – mjw
      10 hours ago






    • 1




      $begingroup$
      @Roman, I do not believe that any lazy evaluation is being done. My comment was more to point out that an evaluation like And[True, True, False, True, True, ... True] will finish at once (and similar remarks apply for Or[]). Perhaps one can judiciously use Catch[]/Throw[]if an early-return test for long lists is desired.
      $endgroup$
      – J. M. is slightly pensive
      9 hours ago















    7












    $begingroup$

    Since you have a very large list, you should look at the timing



    list = RandomReal[1, 10^6];

    (And @@ Positive[list]) // AbsoluteTiming (* Hanlon *)

    (* 0.050573, True *)

    VectorQ[list, Positive] // AbsoluteTiming (* J.M. *)

    (* 0.261642, True *)

    (AnyTrue[list, Negative] // Not) // AbsoluteTiming (* Morbo *)

    (* 0.324062, True *)

    And @@ (list /. x_?Negative -> False,
    x_?Positive -> True) // AbsoluteTiming (* Alrubaie *)

    (* 1.00664, True *)


    EDIT: As suggested by mjw, encountering a nonpositive value early in the list significantly alters the results.



    list2 = ReplacePart[list, 1000 -> -1];

    (And @@ Positive[list2]) // AbsoluteTiming (*Hanlon*)

    (* 0.277642, False *)

    VectorQ[list2, Positive] // AbsoluteTiming (*J.M.*)

    (* 0.000223, False *)

    (AnyTrue[list2, Negative] // Not) // AbsoluteTiming (*Morbo*)

    (* 0.000262, False *)

    And @@ (list2 /. x_?Negative -> False,
    x_?Positive -> True) // AbsoluteTiming (*Alrubaie*)

    (* 1.43026, False *)





    share|improve this answer











    $endgroup$












    • $begingroup$
      Looks like your method is five times faster than the next best! Can you give some insight into why this is? Thanks!
      $endgroup$
      – mjw
      10 hours ago






    • 1




      $begingroup$
      Also, and I guess this depends on the probability of any entry being negative, it may make sense for the algorithm to stop as soon as it finds a negative (or non-positive) element in the list.
      $endgroup$
      – mjw
      10 hours ago






    • 1




      $begingroup$
      @mjw, And[] does short-circuit evaluation.
      $endgroup$
      – J. M. is slightly pensive
      10 hours ago






    • 1




      $begingroup$
      @Bob, Thank you for your edit. Why, though, does it take longer for your method to work when there is a negative entry? I would have thought that in each case, it would take the same amount of time to go through the whole list.
      $endgroup$
      – mjw
      10 hours ago






    • 1




      $begingroup$
      @Roman, I do not believe that any lazy evaluation is being done. My comment was more to point out that an evaluation like And[True, True, False, True, True, ... True] will finish at once (and similar remarks apply for Or[]). Perhaps one can judiciously use Catch[]/Throw[]if an early-return test for long lists is desired.
      $endgroup$
      – J. M. is slightly pensive
      9 hours ago













    7












    7








    7





    $begingroup$

    Since you have a very large list, you should look at the timing



    list = RandomReal[1, 10^6];

    (And @@ Positive[list]) // AbsoluteTiming (* Hanlon *)

    (* 0.050573, True *)

    VectorQ[list, Positive] // AbsoluteTiming (* J.M. *)

    (* 0.261642, True *)

    (AnyTrue[list, Negative] // Not) // AbsoluteTiming (* Morbo *)

    (* 0.324062, True *)

    And @@ (list /. x_?Negative -> False,
    x_?Positive -> True) // AbsoluteTiming (* Alrubaie *)

    (* 1.00664, True *)


    EDIT: As suggested by mjw, encountering a nonpositive value early in the list significantly alters the results.



    list2 = ReplacePart[list, 1000 -> -1];

    (And @@ Positive[list2]) // AbsoluteTiming (*Hanlon*)

    (* 0.277642, False *)

    VectorQ[list2, Positive] // AbsoluteTiming (*J.M.*)

    (* 0.000223, False *)

    (AnyTrue[list2, Negative] // Not) // AbsoluteTiming (*Morbo*)

    (* 0.000262, False *)

    And @@ (list2 /. x_?Negative -> False,
    x_?Positive -> True) // AbsoluteTiming (*Alrubaie*)

    (* 1.43026, False *)





    share|improve this answer











    $endgroup$



    Since you have a very large list, you should look at the timing



    list = RandomReal[1, 10^6];

    (And @@ Positive[list]) // AbsoluteTiming (* Hanlon *)

    (* 0.050573, True *)

    VectorQ[list, Positive] // AbsoluteTiming (* J.M. *)

    (* 0.261642, True *)

    (AnyTrue[list, Negative] // Not) // AbsoluteTiming (* Morbo *)

    (* 0.324062, True *)

    And @@ (list /. x_?Negative -> False,
    x_?Positive -> True) // AbsoluteTiming (* Alrubaie *)

    (* 1.00664, True *)


    EDIT: As suggested by mjw, encountering a nonpositive value early in the list significantly alters the results.



    list2 = ReplacePart[list, 1000 -> -1];

    (And @@ Positive[list2]) // AbsoluteTiming (*Hanlon*)

    (* 0.277642, False *)

    VectorQ[list2, Positive] // AbsoluteTiming (*J.M.*)

    (* 0.000223, False *)

    (AnyTrue[list2, Negative] // Not) // AbsoluteTiming (*Morbo*)

    (* 0.000262, False *)

    And @@ (list2 /. x_?Negative -> False,
    x_?Positive -> True) // AbsoluteTiming (*Alrubaie*)

    (* 1.43026, False *)






    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited 10 hours ago

























    answered 10 hours ago









    Bob HanlonBob Hanlon

    61.1k33598




    61.1k33598











    • $begingroup$
      Looks like your method is five times faster than the next best! Can you give some insight into why this is? Thanks!
      $endgroup$
      – mjw
      10 hours ago






    • 1




      $begingroup$
      Also, and I guess this depends on the probability of any entry being negative, it may make sense for the algorithm to stop as soon as it finds a negative (or non-positive) element in the list.
      $endgroup$
      – mjw
      10 hours ago






    • 1




      $begingroup$
      @mjw, And[] does short-circuit evaluation.
      $endgroup$
      – J. M. is slightly pensive
      10 hours ago






    • 1




      $begingroup$
      @Bob, Thank you for your edit. Why, though, does it take longer for your method to work when there is a negative entry? I would have thought that in each case, it would take the same amount of time to go through the whole list.
      $endgroup$
      – mjw
      10 hours ago






    • 1




      $begingroup$
      @Roman, I do not believe that any lazy evaluation is being done. My comment was more to point out that an evaluation like And[True, True, False, True, True, ... True] will finish at once (and similar remarks apply for Or[]). Perhaps one can judiciously use Catch[]/Throw[]if an early-return test for long lists is desired.
      $endgroup$
      – J. M. is slightly pensive
      9 hours ago
















    • $begingroup$
      Looks like your method is five times faster than the next best! Can you give some insight into why this is? Thanks!
      $endgroup$
      – mjw
      10 hours ago






    • 1




      $begingroup$
      Also, and I guess this depends on the probability of any entry being negative, it may make sense for the algorithm to stop as soon as it finds a negative (or non-positive) element in the list.
      $endgroup$
      – mjw
      10 hours ago






    • 1




      $begingroup$
      @mjw, And[] does short-circuit evaluation.
      $endgroup$
      – J. M. is slightly pensive
      10 hours ago






    • 1




      $begingroup$
      @Bob, Thank you for your edit. Why, though, does it take longer for your method to work when there is a negative entry? I would have thought that in each case, it would take the same amount of time to go through the whole list.
      $endgroup$
      – mjw
      10 hours ago






    • 1




      $begingroup$
      @Roman, I do not believe that any lazy evaluation is being done. My comment was more to point out that an evaluation like And[True, True, False, True, True, ... True] will finish at once (and similar remarks apply for Or[]). Perhaps one can judiciously use Catch[]/Throw[]if an early-return test for long lists is desired.
      $endgroup$
      – J. M. is slightly pensive
      9 hours ago















    $begingroup$
    Looks like your method is five times faster than the next best! Can you give some insight into why this is? Thanks!
    $endgroup$
    – mjw
    10 hours ago




    $begingroup$
    Looks like your method is five times faster than the next best! Can you give some insight into why this is? Thanks!
    $endgroup$
    – mjw
    10 hours ago




    1




    1




    $begingroup$
    Also, and I guess this depends on the probability of any entry being negative, it may make sense for the algorithm to stop as soon as it finds a negative (or non-positive) element in the list.
    $endgroup$
    – mjw
    10 hours ago




    $begingroup$
    Also, and I guess this depends on the probability of any entry being negative, it may make sense for the algorithm to stop as soon as it finds a negative (or non-positive) element in the list.
    $endgroup$
    – mjw
    10 hours ago




    1




    1




    $begingroup$
    @mjw, And[] does short-circuit evaluation.
    $endgroup$
    – J. M. is slightly pensive
    10 hours ago




    $begingroup$
    @mjw, And[] does short-circuit evaluation.
    $endgroup$
    – J. M. is slightly pensive
    10 hours ago




    1




    1




    $begingroup$
    @Bob, Thank you for your edit. Why, though, does it take longer for your method to work when there is a negative entry? I would have thought that in each case, it would take the same amount of time to go through the whole list.
    $endgroup$
    – mjw
    10 hours ago




    $begingroup$
    @Bob, Thank you for your edit. Why, though, does it take longer for your method to work when there is a negative entry? I would have thought that in each case, it would take the same amount of time to go through the whole list.
    $endgroup$
    – mjw
    10 hours ago




    1




    1




    $begingroup$
    @Roman, I do not believe that any lazy evaluation is being done. My comment was more to point out that an evaluation like And[True, True, False, True, True, ... True] will finish at once (and similar remarks apply for Or[]). Perhaps one can judiciously use Catch[]/Throw[]if an early-return test for long lists is desired.
    $endgroup$
    – J. M. is slightly pensive
    9 hours ago




    $begingroup$
    @Roman, I do not believe that any lazy evaluation is being done. My comment was more to point out that an evaluation like And[True, True, False, True, True, ... True] will finish at once (and similar remarks apply for Or[]). Perhaps one can judiciously use Catch[]/Throw[]if an early-return test for long lists is desired.
    $endgroup$
    – J. M. is slightly pensive
    9 hours ago











    3












    $begingroup$

    Ah, maybe this is too simple, but works for exactly what you're doing:



    data = Table[RandomReal[-1,1],i,1,1000];
    AnyTrue[data,Negative] // Not
    (*False*)

    data2 = Table[RandomReal[], i, 1, 10^2];
    AnyTrue[data2, Negative] // Not
    (*True*)





    share|improve this answer











    $endgroup$












    • $begingroup$
      AllTrue[data, Positive] to get the sign right. Or use Not on your solution.
      $endgroup$
      – Roman
      11 hours ago










    • $begingroup$
      @Roman - the poster is using AnyTrue not AllTrue
      $endgroup$
      – Bob Hanlon
      11 hours ago






    • 1




      $begingroup$
      Yes @BobHanlon . In order to invert his solution to what the OP wants you have to either Not@AnyTrue[data,Negative] or (simpler) AllTrue[data,Positive] or AllTrue[data,NonNegative].
      $endgroup$
      – Roman
      10 hours ago











    • $begingroup$
      ah, signs are reversed, missed that part. I updated the code to reflect questioners exact question.
      $endgroup$
      – morbo
      10 hours ago















    3












    $begingroup$

    Ah, maybe this is too simple, but works for exactly what you're doing:



    data = Table[RandomReal[-1,1],i,1,1000];
    AnyTrue[data,Negative] // Not
    (*False*)

    data2 = Table[RandomReal[], i, 1, 10^2];
    AnyTrue[data2, Negative] // Not
    (*True*)





    share|improve this answer











    $endgroup$












    • $begingroup$
      AllTrue[data, Positive] to get the sign right. Or use Not on your solution.
      $endgroup$
      – Roman
      11 hours ago










    • $begingroup$
      @Roman - the poster is using AnyTrue not AllTrue
      $endgroup$
      – Bob Hanlon
      11 hours ago






    • 1




      $begingroup$
      Yes @BobHanlon . In order to invert his solution to what the OP wants you have to either Not@AnyTrue[data,Negative] or (simpler) AllTrue[data,Positive] or AllTrue[data,NonNegative].
      $endgroup$
      – Roman
      10 hours ago











    • $begingroup$
      ah, signs are reversed, missed that part. I updated the code to reflect questioners exact question.
      $endgroup$
      – morbo
      10 hours ago













    3












    3








    3





    $begingroup$

    Ah, maybe this is too simple, but works for exactly what you're doing:



    data = Table[RandomReal[-1,1],i,1,1000];
    AnyTrue[data,Negative] // Not
    (*False*)

    data2 = Table[RandomReal[], i, 1, 10^2];
    AnyTrue[data2, Negative] // Not
    (*True*)





    share|improve this answer











    $endgroup$



    Ah, maybe this is too simple, but works for exactly what you're doing:



    data = Table[RandomReal[-1,1],i,1,1000];
    AnyTrue[data,Negative] // Not
    (*False*)

    data2 = Table[RandomReal[], i, 1, 10^2];
    AnyTrue[data2, Negative] // Not
    (*True*)






    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited 10 hours ago

























    answered 11 hours ago









    morbomorbo

    46418




    46418











    • $begingroup$
      AllTrue[data, Positive] to get the sign right. Or use Not on your solution.
      $endgroup$
      – Roman
      11 hours ago










    • $begingroup$
      @Roman - the poster is using AnyTrue not AllTrue
      $endgroup$
      – Bob Hanlon
      11 hours ago






    • 1




      $begingroup$
      Yes @BobHanlon . In order to invert his solution to what the OP wants you have to either Not@AnyTrue[data,Negative] or (simpler) AllTrue[data,Positive] or AllTrue[data,NonNegative].
      $endgroup$
      – Roman
      10 hours ago











    • $begingroup$
      ah, signs are reversed, missed that part. I updated the code to reflect questioners exact question.
      $endgroup$
      – morbo
      10 hours ago
















    • $begingroup$
      AllTrue[data, Positive] to get the sign right. Or use Not on your solution.
      $endgroup$
      – Roman
      11 hours ago










    • $begingroup$
      @Roman - the poster is using AnyTrue not AllTrue
      $endgroup$
      – Bob Hanlon
      11 hours ago






    • 1




      $begingroup$
      Yes @BobHanlon . In order to invert his solution to what the OP wants you have to either Not@AnyTrue[data,Negative] or (simpler) AllTrue[data,Positive] or AllTrue[data,NonNegative].
      $endgroup$
      – Roman
      10 hours ago











    • $begingroup$
      ah, signs are reversed, missed that part. I updated the code to reflect questioners exact question.
      $endgroup$
      – morbo
      10 hours ago















    $begingroup$
    AllTrue[data, Positive] to get the sign right. Or use Not on your solution.
    $endgroup$
    – Roman
    11 hours ago




    $begingroup$
    AllTrue[data, Positive] to get the sign right. Or use Not on your solution.
    $endgroup$
    – Roman
    11 hours ago












    $begingroup$
    @Roman - the poster is using AnyTrue not AllTrue
    $endgroup$
    – Bob Hanlon
    11 hours ago




    $begingroup$
    @Roman - the poster is using AnyTrue not AllTrue
    $endgroup$
    – Bob Hanlon
    11 hours ago




    1




    1




    $begingroup$
    Yes @BobHanlon . In order to invert his solution to what the OP wants you have to either Not@AnyTrue[data,Negative] or (simpler) AllTrue[data,Positive] or AllTrue[data,NonNegative].
    $endgroup$
    – Roman
    10 hours ago





    $begingroup$
    Yes @BobHanlon . In order to invert his solution to what the OP wants you have to either Not@AnyTrue[data,Negative] or (simpler) AllTrue[data,Positive] or AllTrue[data,NonNegative].
    $endgroup$
    – Roman
    10 hours ago













    $begingroup$
    ah, signs are reversed, missed that part. I updated the code to reflect questioners exact question.
    $endgroup$
    – morbo
    10 hours ago




    $begingroup$
    ah, signs are reversed, missed that part. I updated the code to reflect questioners exact question.
    $endgroup$
    – morbo
    10 hours ago











    2












    $begingroup$

    list = 1, 2, 3, 4, -5, -6, -7;

    list /. x_?Negative -> True, x_?Positive -> False





    share|improve this answer









    $endgroup$

















      2












      $begingroup$

      list = 1, 2, 3, 4, -5, -6, -7;

      list /. x_?Negative -> True, x_?Positive -> False





      share|improve this answer









      $endgroup$















        2












        2








        2





        $begingroup$

        list = 1, 2, 3, 4, -5, -6, -7;

        list /. x_?Negative -> True, x_?Positive -> False





        share|improve this answer









        $endgroup$



        list = 1, 2, 3, 4, -5, -6, -7;

        list /. x_?Negative -> True, x_?Positive -> False






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 11 hours ago









        AlrubaieAlrubaie

        31910




        31910




















            a b is a new contributor. Be nice, and check out our Code of Conduct.









            draft saved

            draft discarded


















            a b is a new contributor. Be nice, and check out our Code of Conduct.












            a b is a new contributor. Be nice, and check out our Code of Conduct.











            a b is a new contributor. Be nice, and check out our Code of Conduct.














            Thanks for contributing an answer to Mathematica Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            Use MathJax to format equations. MathJax reference.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f194043%2fhow-to-check-is-there-any-negative-term-in-a-large-list%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Isurus Índice Especies | Notas | Véxase tamén | Menú de navegación"A compendium of fossil marine animal genera (Chondrichthyes entry)"o orixinal"A review of the Tertiary fossil Cetacea (Mammalia) localities in wales port taf Museum Victoria"o orixinalThe Vertebrate Fauna of the Selma Formation of Alabama. Part VII. Part VIII. The Mosasaurs The Fishes50419737IDsh85068767Isurus2548834613242066569678159923NHMSYS00210535017845105743

            Король Коль Исторические данные | Стихотворение | Примечания | Навигацияверсии1 правкаверсии1 правкаA New interpretation of the 'Artognou' stone, TintagelTintagel IslandАрхивировано

            Roughly how much would it cost to hire a team of dwarves to build a home in the mountainside? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)How much does a house cost?How long does it take to mine rock?How much does a house cost?How much gold would the construction of a forge cost?How much does a door cost?How much would it cost to make this magic item?How much would a glue bomb cost?How much does mandrake root cost?How much does a slave cost?How much does equipment cost?How much do sheep cost?How much would firearms cost?