<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def next_available_name(self, fmt_str='arr{0}', counter=None):
 """Create a new array out of the given format string Parameters format_str: str The base string to use. ``'{0}'`` will be replaced by a counter counter: iterable An iterable where the numbers should be drawn from. If None, ``range(100)`` is used Returns ------- str A possible name that is not in the current project"""

        names = self.arr_names
        counter = counter or iter(range(1000))
        try:
            new_name = next(
                filter(lambda n: n not in names,
                       map(fmt_str.format, counter)))
        except StopIteration:
            raise ValueError(
                "{0} already in the list".format(fmt_str))
        return new_name