Найти - Пользователи
Полная версия: Как разбить список на N кусков?
Начало » Python для новичков » Как разбить список на N кусков?
1
VladimirDeg
Здраствуйте! Стоит задача: Напишите функцию, которая принимает список и число. Функция должна разбить список на 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 частей и выполнить проверку?
Palrom
VladimirDeg
[code python]между этими тегами вставлять код на форуме[/code]

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




VladimirDeg
Здравствуйте, добавить!
Palrom
  
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))
VladimirDeg
спасибо
FishHook
Не знаю, разумно ли использовать это в рабочей программе, но есть вот такой известный хак в питоне. Как минимум это будет полезно разобрать и понять почему это вообще работает

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

py.user.next
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?
FishHook
py.user.next
Я добавил букву q
молодец!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB