Adam Cripps wrote: > I have a list which comprises of simple random arithmetic problems for > teachers to give to their pupils. This list must be a set length (if > the teacher asks for 10 questions, they should get 10 questions), but > should not have any duplicates. > > I've seen the use of sets, but this reduces the size of the list, when > I have to have a fixed length. > > Is there a quick way of checking if a string is already within a list > without iterating over the items of the list (which will slow the > application down slightly)?
Hmm. If you are trying to pick 10 elements at random from a larger list, use random.sample(problems, 10) If for some reason that doesn't work for you (maybe you are creating problems on the fly?) you could build a set in a loop, adding items until it is the size you want: problemSet = set() while len(problemSet) < 10: # do something to add a (possibly) new problem to the set Finally, unless your lists are huge (thousands of items, at a guess) or you are doing this very many times (thousands of times), you will not notice the time it takes to search the list for duplicates. Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor