LINUX.ORG.RU

python разделить список на равные группы

 


0

2

а есть ли вообще в python простой, очевидный, быстронабираемый и быстрозапоминаемый способ разделить список на равные группы

типа a = list('abcdef1234')
b = брум брум 4

b = [".join(x) for x in b]

итого b = ['abcd', 'ef12', '34']

★★★★★

а есть ли вообще в python простой, очевидный

Это легко проверяемо. Берём рандомного питониста и просим его написать — wait, oh shi-, значит нет.

Навскидку, проверять лень:

[l for _, l in groupby(enumerate(a), lambda a: a[0] // 4)]
t184256 ★★★★★ ()

Функциональное решение через свёртку

>>> from functools import reduce
>>> input = list(range(14))
>>> reduce(lambda xss, x: xss[:-1] + [xss[-1] + [x]] if len(xss[-1]) < 4 else xss + [[x]], input, [[]])
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13]]
Crocodoom ★★★ ()
Ответ на: комментарий от Crocodoom

перегрузить в нем операцию div, сразу появится

Хорошая идея, только лучше mod, так как от list / 2 ожидаешь всё-таки деления списка пополам

Готового способа нет именно поэтому.

Хочешь кастомное действие, которое должно однозначно пониматься при чтении кода - опиши его как можно более простыми из имеющихся средств языка, не плодя лишних сущностей.

blexey ★★★★★ ()
def parting(inp,d):
    o,c=[],[]
    for z in inp:
        c.append(z);
        if len(c)==d:
            o.append(c)
            c=[]
    else:
        if c:
           o.append(c)
    return o

def jojo(ll):
    return [''.join(l) for l in ll]

print(jojo(parting('abcdef1234',4)),file=__import__('sys').stdout)

parting - он конечно в лоб и линейно без всяких лист компиренсив - но вот прям простой, очевидный, быстронабираемый и быстрозапоминаемый

qulinxao3 ()
Ответ на: комментарий от qulinxao3

порфирьевич

а вот что будет, если посты qulinxao скормить порфирьевичу #порфирьевич ?

развлекался пару дней, скармливая коллекцию мицголизмов порфирьевичу – невозбранно достигнув желаемого.

хотя там простые марковские цепи. и вроде память не очень длинная.

anonymous ()
Ответ на: комментарий от buratino

В процессе финальной схватки герой получает 5000 золотых и по морде. Но он встает и говорит: — Уйди, противный! Злодей от ужаса меняет фамилию.

Всем наступает хэппи-энд, все живут долго и счастливо, а главный герой продолжает в том же духе.

anonymous ()
Ответ на: комментарий от anonymous

он знал

Как оказывается, враг героя — светлая голова. В процессе тяжелого, тупого и нудного разговора выясняется, что герой — хрен моржовый. Вскоре наступает финальная битва между всеми возможными странами, народами и божествами. Напарники героя обижаются и покидают героя.

Сила злодеев такова, что их можно победить только сбросив все, что осталось, в жерло вулкана

anonymous ()
Ответ на: комментарий от anonymous

хоть сейчас в печать:

В одном старом доме с привидениями жил один среднестатистический-ничем-не-примечательный паренек. Из родных и близких у него был воспитавший его друг умершего отца (никому не известный, даже отцу).

И вот однажды к нему подходит странно выглядящий человек и говорит: Ты — избранный! Герой ничуть не удивляется.

Тогда пришелец говорит: — Беги, прячься скорее, ОНИ идут за тобой. Герой со свистом покидает родные места. Он бежит к знакомым странного визитера.

Странный визитер тем временем лежит мертвый.

В пути герой встречает нового друга. Вскоре они вместе становятся атакованы друг другом. Избавившись от неприятелей, герой с компанией добирается до места, где их посылают на...

Как оказывается, враг героя — абстрактное зло в серую полосочку. В процессе тяжелого, тупого и нудного разговора выясняется, что герой — хрен моржовый. Вскоре наступает финальная борьба за мир между героем и главным злодеем. Напарники героя погибают от собственной глупости, произнеся перед этим торжественную речь.

Сила злодеев такова, что их можно победить только найдя древний артефакт (или потеряв, если уже нашли)

В процессе финальной схватки герой получает Оскара за лучшую мужскую роль. Но он встает и говорит: — Со мной Сила! Злодей от ужаса меняет фамилию.

Всем наступает хэппи-энд, все живут долго и счастливо, а главный герой на цыпочках под шумок перебирается в следующую часть произведения.

buratino ★★★★★ ()
Ответ на: комментарий от buratino

>+порфирьевич

В одном большом городе жил один маленький мальчик. Из родных и близких у него были дядя с тетей, которые его терпеть не могли;

И вот однажды к нему подходит старый седой волшебник и говорит: Ты — избранный! Герой очень удивляется.

Тогда пришелец говорит:

— Беги, прячься скорее, ОНИ идут за тобой.

Герой со свистом покидает родные места. Он бежит к знакомым странного визитера.

Странный визитер тем временем бежит рядом.

  • Вдруг он замечает игрушечный цирк, где время от времени устраивают танцы.

В пути герой встречает нового друга. Вскоре они вместе становятся атакованы посланцами злых сил. Избавившись от неприятелей, герой с компанией добирается до места, где им помогают.

  • По указанию странника начинается необыкновенное состязание между путниками и волшебником. Друзья побеждают. Побеждает волшебный гость. И вот в роскошном лесу начинаются такие чудеса, что один за другим сбегаются на представление добрые волшебники.

Как оказывается, враг героя — абстрактное зло в серую полосочку. В процессе тяжелого, тупого и нудного разговора выясняется, что герой — хрен моржовый. Вскоре наступает финальная борьба за мир между героем и главным злодеем. Напарники героя погибают от собственной глупости, произнеся перед этим торжественную речь.

  • После этого герои вновь объединяются, чтобы умереть по очереди — либо в битве с главными врагами, либо под пение прекрасной фанфары на эшафоте. Сам герой продолжает свое странствование, убивая редких жуков. С каждым днем ему становится лучше и лучше. Вскоре он узнает о заговоре, который возглавляет один из его спутников.

Сила злодеев такова, что их можно победить только во сне.

  • А здесь главное действие происходит во сне героя. Ночью им овладевает сонмище разных сверхъестественных чудовищ. И вот героя вызывает к себе главный волшебник.

В процессе финальной схватки герой получает 351 рану (из них 177 — в одно место). Но он встает и говорит:

— Со мной Сила!

Злодей от ужаса притворяется мертвым.

  • Но герой пронзает его грудь и сквозь дыру видит несметные сокровища. Разъяренный герой бросается на подмогу, но получает удар рогом из головы. Уже после его смерти герой узнаёт от магистра, что заговорщики, расставшись с жизнью, отнесли их души к южному колодцу и спрятали там.

Всем наступает хэппи-энд, все живут долго и счастливо, а главный герой на цыпочках под шумок перебирается в следующую часть произведения.

  • Его путешествия по всему миру носят еще более таинственный и странный характер. Он путешествует вместе со своим вождем, а за ним следует маленький ослик. Некоторое время мальчик с вождем проходят в свете факелов, сидя на корточках и упираясь спинами в землю, но вскоре им становится холодно, и они встают. Потом они идут по лестнице наверх, но через некоторое время начинают спотыкаться и падать. Они снова поднимаются и продолжают спуск. И вдруг откуда-то снизу доносится жалобный детский крик, который они сначала принимают за кошачий. Вместо того, чтобы подняться, они сначала смотрят на него, а потом бросаются бежать. И вскоре герой натыкается на этого «врага тьмы», который пытается убить его, чтобы завладеть его головой и силой дуг. Но герой, которому по-прежнему жарко и страшно, в ужасе отбегает от мальчика и выкрикивает имя тролля, в руке у которого сверкает волшебный меч, и тролль убегает. Дальше следуют долгая битва и всевозможные приключения, сопровождающие мальчика с вождем.
anonymous ()