##### using element on a list as condition statement
 using element on a list as condition statement Posts: 1,738 Threads: 1 Joined: Apr 2017 Reputation: May-21-2020, 07:47 AM (This post was last modified: May-21-2020, 07:47 AM by ndc85430.) (May-20-2020, 12:12 PM)hussainmujtaba Wrote: A list can have the same element multiple times, when converting it to a set, it ll only contain element once. Thus the search space has decreased and it 'll be faster. This really isn't correct reasoning. Consider a list of length n containing unique items. The performance of the search isn't going to be the same as for a set. With a list, you either have to do a search through the entire thing to find the item you want (which at worst takes time proportional to n, hence why this is called a linear search) or if the list is sorted, perform a binary search (which at worst takes time proportional to log_2 n). Sets are based on hash tables, meaning that items are stored in buckets based on their hash value (a number representing them). Searching for an item means computing its hash (which should be fast!) and then using that as an index into this table, which is an array-like thing, meaning that looking up something by index (and consequently search) is done in constant time (i.e. independent of n). I suspect the constants of proportionality here mean that the difference is going to be noticeable only for sufficiently large n. Reply hussainmujtaba Silly Frenchman Posts: 43 Threads: 0 Joined: Apr 2020 Reputation: May-21-2020, 12:53 PM (May-20-2020, 02:40 PM)perfringo Wrote: (May-20-2020, 12:12 PM)hussainmujtaba Wrote: It is more efficient if you convert your list to a set just for comparison purpose. A list can have the same element multiple times, when converting it to a set, it ll only contain element once. I think that using built-in any() is even more efficient approach. Due to short-circuiting nature it will stop if first match encountered. In real life scenarios this means that if there is a match you don't need to go through all items in list or convert whole list into set. One can craft such a code: ```>>> target = 33 >>> lst = [11, 22, 33, 44, 55] >>> match = ['is not', 'is'][any(target == item for item in lst)] >>> f'{target} {match} in the list' '33 is in the list' >>> target = 10 >>> match = ['is not', 'is'][any(target == item for item in lst)] >>> f'{target} {match} in the list' '10 is not in the list' ```Instead of ['is not', 'is'] one can use ['not', ''] and put 'is' into string but it would be too cryptic for my taste. I am pretty much sure that the both methods will take the exactly the same time to execute.You can check practically if you want Reply

 Possibly Related Threads… Thread Author Replies Views Last Post Membership test for an element in a list that is a dict value for a particular key? Mark17 2 266 Jul-01-2022, 10:52 PM Last Post: Pedroski55 List Creation and Position of Continue Statement In Regular Expression Code new_coder_231013 3 410 Jun-15-2022, 12:00 PM Last Post: new_coder_231013 How to find the second lowest element in the list? Anonymous 3 358 May-31-2022, 01:58 PM Last Post: Larz60+ check if element is in a list in a dictionary value ambrozote 4 601 May-11-2022, 06:05 PM Last Post: deanhystad select Eof extension files based on text list of filenames with if condition RolanRoll 1 557 Apr-04-2022, 09:29 PM Last Post: Larz60+ Change a list to integer so I can use IF statement buckssg 3 1,197 Sep-21-2021, 02:58 AM Last Post: bowlofred sorting a list of lists by an element leapcfm 3 904 Sep-10-2021, 03:33 PM Last Post: leapcfm How to invoke a function with return statement in list comprehension? maiya 4 1,326 Jul-17-2021, 04:30 PM Last Post: maiya An IF statement with a List variable dedesssse 3 1,276 Jul-08-2021, 05:58 PM Last Post: perfringo Convert each element of a list to a string for processing tester_V 6 2,622 Jun-16-2021, 02:11 AM Last Post: tester_V

Forum Jump:

### User Panel Messages

##### Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020