On 28/09/10 01:50, Brian Jones wrote:


On Mon, Sep 27, 2010 at 11:43 AM, Brian Jones <bkjo...@gmail.com
<mailto:bkjo...@gmail.com>> wrote:

How about this:

d = [digits, punctuation, ascii_uppercase, ascii_lowercase]
s = 'asdf1234A'
for c in d:
    if not [x for x in s if x in c]:
        print x, ' not in ', c

Just a quick hack, but you get the idea. It breaks when you want
different numbers of characters from the different lists in the password.

    You can probably make other optimizations, but just to start, you
    can get rid of 'len' and '== 0':

    if not [c for c in password if c in ascii_lowercase]:
        return False

    will return False if there are no lowercase characters. An empty
    list evaluates to False. With that in mind, you could just 'return
    [c for c in password if c in ascii_lowercase]' if the calling code
    is written to handle it.

I've rewritten that section of code using the lambda example from this thread since to me it just looks very clean. Thanks for the pointers on list comprehensions though, I've managed to go through and simplify quite a few bits of code based on that. I'm a little embarrased about all the len() now. :)
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to