Как составить список из списков из n предметов - PullRequest
0 голосов
/ 31 марта 2019

У меня есть список

['Boogeyman', '66', 'Battleground', '50', 'Rodgeners', '17']

Я хочу получить список со списком из n (например, 2) элементов, т.е.

[['Boogeyman', '66'],['Battleground', '50'],['Rodgeners', '17']]

Как это использовать для ???

Ответы [ 2 ]

1 голос
/ 31 марта 2019
In [1]: l = list(range(10))

In [2]: [l[i:i+2] for i in range(0,len(l),2)]
Out[2]: [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]

Был бы более идиоматический способ сделать это.

Вдохновленный itertools ответ можно сделать

list(zip(*([iter(range(10))] * 2)))

или

from itertools import zip_longest
list(zip_longest(*([iter(range(9))] * 2), fillvalue='x'))
0 голосов
/ 31 марта 2019

, как упоминалось в комментариях, grouper в itertools рецептах :

from itertools import zip_longest


def grouper(iterable, n, fillvalue=None):
    args = [iter(iterable)] * n

    # this will return tuples
    # return zip_longest(*args, fillvalue=fillvalue)

    # this will return lists
    return (list(item) for item in zip_longest(*args, fillvalue=fillvalue))

lst = ['Boogeyman', '66', 'Battleground', '50', 'Rodgeners', '17']
res = list(grouper(lst, 2))
# [['Boogeyman', '66'], ['Battleground', '50'], ['Rodgeners', '17']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...