24 lines
921 B
Markdown
24 lines
921 B
Markdown
### zip
|
|
|
|
:information_source: Already implemented via `itertools.zip_longest()`
|
|
|
|
Creates a list of elements, grouped based on the position in the original lists.
|
|
|
|
Use `max` combined with `list comprehension` to get the length of the longest list in the arguments. Loops for `max_length` times grouping elements. If lengths of `lists` vary `fill_value` is used. By default `fill_value` is `None`.
|
|
|
|
```python
|
|
def zip(*args, fillvalue=None):
|
|
max_length = max([len(arr) for arr in args])
|
|
result = []
|
|
for i in range(max_length):
|
|
result.append([
|
|
args[k][i] if i < len(args[k]) else None for k in range(len(args))
|
|
])
|
|
return result
|
|
```
|
|
|
|
``` python
|
|
zip(['a', 'b'], [1, 2], [True, False]) # [['a', 1, True], ['b', 2, False]]
|
|
zip(['a'], [1, 2], [True, False]) # [['a', 1, True], [None, 2, False]]
|
|
zip(['a'], [1, 2], [True, False], fill_value = '_') # [['a', 1, True], ['_', 2, False]]
|
|
``` |