@marataziat
Джангист-тракторист

Как выводить по 5 значений из листа?

У меня есть лист users = [`lol`,`lol`,`lol`,`lol`,`lol`,`lol`,`lol`,`lol`,`lol`]
Как мне выводить этот лист не по 1 значению а по 5 при каждом print?
  • Вопрос задан
  • 225 просмотров
Решения вопроса 1
@fireSparrow
Можно написать вот такой класс:

class FivePrintList(list):

    def __init__(self, *args):
        super(FivePrintList, self).__init__(args)
        self.cursor = 0

    def print_five(self):
        cursor = self.cursor
        next_cursor = cursor + 5
        print(self[cursor:next_cursor])
        self.cursor = next_cursor


Теперь вы можете создавать особый список вот таким образом:

users = FivePrintList('lol', 'lol', 'lol', 'lol', 'lol', 'lol', 'lol', 'lol', 'lol')


Этот особый список обладает методом print_five(), при вызове которого будут напечатаны очередные 5 элементов. Вызов метода можно повторять сколько угодно раз, пока все элементы не будут исчерпаны.

users.print_five()
users.print_five()
users.print_five()
users.print_five()

# Напечатает:
# ['lol', 'lol', 'lol', 'lol', 'lol']
# ['lol', 'lol', 'lol', 'lol']
# []
# []
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
aRegius
@aRegius
Python Enthusiast
Используйте слайсы (срезы), цикл for и функцию range():
>>> num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> len_num_list = len(num_list) + 1
>>> start_slice = 0
>>> for i in range(5, len_num_list, 5):
	        print(num_list[start_slice:i])
	        start_slice += i
	
[1, 2, 3, 4, 5]
[6, 7, 8, 9, 10]


Для того, чтобы вывести по группам в случайном порядке без повторов добавьте random.shuffle():
>>> import random
>>> new_num_list = num_list[:]
>>> random.shuffle(new_num_list)
>>> start_slice = 0
>>> for i in range(5, len_num_list, 5):
	        print(new_num_list[start_slice:i])
	        start_slice += i
	
[8, 2, 9, 3, 6]
[10, 1, 4, 7, 5]
Ответ написан
Комментировать
@andrezaycev
System & Network Engineer
users = ['lol', 'lol', 'lol', 'lol', 'lol', 'lol', 'lol', 'lol', 'lol']
n = 5
for x in (users[i:i + n] for i in range(0, len(users), n - 1)):
    print(x)


На выходе:
['lol', 'lol', 'lol', 'lol', 'lol']
['lol', 'lol', 'lol', 'lol', 'lol']
['lol']
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы