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