Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 16, 2022 18:21:33

VladimirDeg
Зарегистрирован: 2022-06-16
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Как разбить список на N кусков?

Здраствуйте! Стоит задача: Напишите функцию, которая принимает список и число. Функция должна разбить список на N кусков, переданных в функцию в качестве второго аргумента. Выполнить проверки по здравому смыслу (например, нет смысла пытаться разбить список из 3 элементов на 4 элемента)

lst = “red”, “blue”, “dark”
number = 5
def func(lst, number):
string = “ ”.join(lst)
lst2 = string.split()
print(lst2, number) func(lst, number)

Как разбить на N частей и выполнить проверку?

Офлайн

#2 Июнь 16, 2022 20:24:23

Palrom
Зарегистрирован: 2022-04-21
Сообщения: 82
Репутация: +  5  -
Профиль   Отправить e-mail  

Как разбить список на N кусков?

VladimirDeg
[code python]между этими тегами вставлять код на форуме[/code]

С остатком-то что делать? Добавлять в тот же список или откидывать?




Отредактировано Palrom (Июнь 16, 2022 20:26:58)

Офлайн

#3 Июнь 17, 2022 11:42:22

VladimirDeg
Зарегистрирован: 2022-06-16
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Как разбить список на N кусков?

Здравствуйте, добавить!

Офлайн

#4 Июнь 17, 2022 12:11:55

Palrom
Зарегистрирован: 2022-04-21
Сообщения: 82
Репутация: +  5  -
Профиль   Отправить e-mail  

Как разбить список на N кусков?

  
lst = ['red', 'blue', 'dark', 'green', 'black', 'yellow', 'brown', 'white',
       'grey', 'orange', 'bright', 'purple', 'etc']
 
number = 5
 
def func(lst, number):
    temp = []
    if number > len(lst):
        print('Число больше длины списка')
        return False
    elif number <= 0:
        print('Число меньше или равно 0')
        return False
    step = round(len(lst) / number)
    for i in range(0, len(lst), step):
        temp.append(lst[i: step + i])
    return temp
 
print(func(lst, number))

Офлайн

#5 Июнь 20, 2022 08:31:09

VladimirDeg
Зарегистрирован: 2022-06-16
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Как разбить список на N кусков?

спасибо

Офлайн

#6 Июнь 20, 2022 10:46:35

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как разбить список на N кусков?

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

 l = "abcdefghijklmnop"
peaces = 3
print(list(zip(*([iter(l)] * peaces))))



Офлайн

#7 Июль 3, 2022 09:11:19

VladimirDeg
Зарегистрирован: 2022-06-16
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Как разбить список на N кусков?

FishHook
и понять почему это вообще работает
Для меня это сложно ) Пока только учусь

Офлайн

#8 Июль 3, 2022 13:48:50

Palrom
Зарегистрирован: 2022-04-21
Сообщения: 82
Репутация: +  5  -
Профиль   Отправить e-mail  

Как разбить список на N кусков?

FishHook
 print(list(zip(*([iter(l)] * peaces))))
Это прям жоско.
Это задание с подвохом на самом деле. Я сначала тоже набросал функцию которая разбивает список на куски из N-количества строк, и уже почти запостил, как вдруг решил перечитать ещё раз задание, а там нужно:
Функция должна разбить список на N кусков, переданных в функцию в качестве второго аргумента
Кто придумал этот изврат я хз, но пришлось переписывать всё.

Офлайн

#9 Июль 3, 2022 14:41:00

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9870
Репутация: +  853  -
Профиль   Отправить e-mail  

Как разбить список на N кусков?

FishHook
  
l = "abcdefghijklmnop"
peaces = 3
print(list(zip(*([iter(l)] * peaces))))
Я добавил букву q и всё слетело
  
>>> l = "abcdefghijklmnopq"
>>> peaces = 3
>>> print(list(zip(*([iter(l)] * peaces))))
[('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'h', 'i'), ('j', 'k', 'l'), ('m', 'n', 'o')]
>>>
Где буквы p и q?



Офлайн

#10 Июль 3, 2022 14:59:37

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как разбить список на N кусков?

py.user.next
Я добавил букву q
молодец!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version