Python has a built−in filter function which takes two arguments, a function and a list, and returns a list.[7] The
function passed as the first argument to filter must itself take one argument, and the list that filter returns will
contain all the elements from the list passed to filter for which the function passed to filter returns true.
>>>
...
...
>>>
>>>
[1,
>>>
>>>
>>>
...
...
...
>>>
[1,
def odd(n):
return n % 2
li = [1, 2, 3, 5, 9, 10, 256, −3]
filter(odd, li)
3, 5, 9, −3]
[e for e in li if odd(e)]
filteredList = []
for n in li:
if odd(n):
filteredList.append(n)
filteredList
3, 5, 9, −3]
odd uses the built−in mod function "%" to return True if n is odd and False if n is even.
filter takes two arguments, a function (odd) and a list (li). It loops through the list and calls odd with
each element. If odd returns a true value (remember, any non−zero value is true in Python), then the element is
included in the returned list, otherwise it is filtered out. The result is a list of only the odd numbers from the
original list, in the same order as they appeared in the original.
You could accomplish the same thing using list comprehensions, as you saw in Section 4.5, Filtering Lists.
You could also accomplish the same thing with a for loop. Depending on your programming background, this
may seem more "straightforward", but functions like filter are much more expressive. Not only is it easier
to write, it's easier to read, too. Reading the for loop is like standing too close to a painting; you see all the
details, but it may take a few seconds to be able to step back and see the bigger picture: "Oh, you're just
filtering the list!"
filter in regression.py
files = os.listdir(path)
test = re.compile("test\.py$", re.IGNORECASE)
files = filter(test.search, files)
As you saw in Section 16.2, Finding the path, path may contain the full or partial pathname of the
directory of the currently running script, or it may contain an empty string if the script is being run from
the current directory. Either way, files will end up with the names of the files in the same directory
as this script you're running.
This is a compiled regular expression. As you saw in Section 15.3, Refactoring, if you're going to
use the same regular expression over and over, you should compile it for faster performance. The
compiled object has a search method which takes a single argument, the string to search. If the
regular expression matches the string, the search method returns a Match object containing
information about the regular expression match; otherwise it returns None, the Python null value.
For each element in the files list, you're going to call the search method of the compiled regular
expression object, test. If the regular expression matches, the method will return a Match object,
which Python considers to be true, so the element will be included in the list returned by filter. If
the regular expression does not match, the search method will return None, which Python considers
to be false, so the element will not be included.
function passed as the first argument to filter must itself take one argument, and the list that filter returns will
contain all the elements from the list passed to filter for which the function passed to filter returns true.
>>>
...
...
>>>
>>>
[1,
>>>
>>>
>>>
...
...
...
>>>
[1,
def odd(n):
return n % 2
li = [1, 2, 3, 5, 9, 10, 256, −3]
filter(odd, li)
3, 5, 9, −3]
[e for e in li if odd(e)]
filteredList = []
for n in li:
if odd(n):
filteredList.append(n)
filteredList
3, 5, 9, −3]
odd uses the built−in mod function "%" to return True if n is odd and False if n is even.
filter takes two arguments, a function (odd) and a list (li). It loops through the list and calls odd with
each element. If odd returns a true value (remember, any non−zero value is true in Python), then the element is
included in the returned list, otherwise it is filtered out. The result is a list of only the odd numbers from the
original list, in the same order as they appeared in the original.
You could accomplish the same thing using list comprehensions, as you saw in Section 4.5, Filtering Lists.
You could also accomplish the same thing with a for loop. Depending on your programming background, this
may seem more "straightforward", but functions like filter are much more expressive. Not only is it easier
to write, it's easier to read, too. Reading the for loop is like standing too close to a painting; you see all the
details, but it may take a few seconds to be able to step back and see the bigger picture: "Oh, you're just
filtering the list!"
filter in regression.py
files = os.listdir(path)
test = re.compile("test\.py$", re.IGNORECASE)
files = filter(test.search, files)
As you saw in Section 16.2, Finding the path, path may contain the full or partial pathname of the
directory of the currently running script, or it may contain an empty string if the script is being run from
the current directory. Either way, files will end up with the names of the files in the same directory
as this script you're running.
This is a compiled regular expression. As you saw in Section 15.3, Refactoring, if you're going to
use the same regular expression over and over, you should compile it for faster performance. The
compiled object has a search method which takes a single argument, the string to search. If the
regular expression matches the string, the search method returns a Match object containing
information about the regular expression match; otherwise it returns None, the Python null value.
For each element in the files list, you're going to call the search method of the compiled regular
expression object, test. If the regular expression matches, the method will return a Match object,
which Python considers to be true, so the element will be included in the list returned by filter. If
the regular expression does not match, the search method will return None, which Python considers
to be false, so the element will not be included.
Comments
Post a Comment
https://gengwg.blogspot.com/