[Tutor] Removing duplicates in a list with a fixed length of items in the list.
Kent Johnson
kent37 at tds.net
Thu Jan 11 15:32:40 CET 2007
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
More information about the Tutor
mailing list