# cf.flat¶

cf.flat(x)[source]

Return an iterator over an arbitrarily nested sequence.

Parameters
x: scalar or arbitrarily nested sequence

The arbitrarily nested sequence to be flattened. Note that a If x is a string or a scalar then this is equivalent to passing a single element sequence containing x.

Returns
generator

An iterator over flattened sequence.

Examples:

>>> cf.flat([1, [2, [3, 4]]])
<generator object flat at 0x3649cd0>

>>> list(cf.flat([1, (2, [3, 4])]))
[1, 2, 3, 4]

>>> import numpy
>>> list(cf.flat((1, [2, numpy.array([[3, 4], [5, 6]])]))
[1, 2, 3, 4, 5, 6]

>>> for a in cf.flat([1, [2, [3, 4]]]):
...     print(a, end=' ')
...
1 2 3 4

>>> for a in cf.flat(['a', ['bc', ['def', 'ghij']]]):
...     print(a, end=' ')
...
a bc def ghij

>>> for a in cf.flat(2004):
...     print(a)
...
2004

>>> for a in cf.flat('abcdefghij'):
...     print(a, end=' ')
...
abcdefghij

>>> f
<CF Field: eastward_wind(air_pressure(5), latitude(110), longitude(106)) m s-1>
>>> for a in cf.flat(f):
...     print(repr(a))
...
<CF Field: eastward_wind(air_pressure(5), latitude(110), longitude(106)) m s-1>

>>> for a in cf.flat([f, [f, [f, f]]]):
...     print(repr(a))
...
<CF Field: eastward_wind(air_pressure(5), latitude(110), longitude(106)) m s-1>
<CF Field: eastward_wind(air_pressure(5), latitude(110), longitude(106)) m s-1>
<CF Field: eastward_wind(air_pressure(5), latitude(110), longitude(106)) m s-1>
<CF Field: eastward_wind(air_pressure(5), latitude(110), longitude(106)) m s-1>

>>> fl = cf.FieldList(cf.flat([f, [f, [f, f]]])
>>> fl
[<CF Field: eastward_wind(air_pressure(5), latitude(110), longitude(106)) m s-1>,
<CF Field: eastward_wind(air_pressure(5), latitude(110), longitude(106)) m s-1>,
<CF Field: eastward_wind(air_pressure(5), latitude(110), longitude(106)) m s-1>,
<CF Field: eastward_wind(air_pressure(5), latitude(110), longitude(106)) m s-1>]