On Tue, Mar 3, 2009 at 4:54 AM, Wayne Watson <sierra_mtnv...@sbcglobal.net> wrote: > What is this: d = [ int(x) for x in s.split(":") ] > I see in the program I'm looking at, the [] construction can be much more > complicated, as in: > self.recent_events = [ event for event in self.recent_events > if os.path.exists(event) and > (time.time() - os.path.getmtime(event)) < > 3600.0 ]
That's called list comprehension. The notation [f(x) for x in A if p(x)] means: Form a list in the following way: Start with an empty list. Then go through A, and for each x in A, if p(x) is true, add f(x) to the list. d = [f(x) for x in A if p(x)] is equivalent to: d = [] for x in A: if p(x): d.append(f(x)) Your first example had no p(x) defined, which means that it's done for all x, that is: [ int(x) for x in s.split(":") ] means: The list, formed by taking int(x) for all x in the result of s.split(":"). It is almost English, really... [f(x) for x in A if p(x)] means: f(x) for all x in A for which p(x) holds. -- André Engels, andreeng...@gmail.com _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor