Можно ли сократить/оптимизировать код при выводе функции print()?
Дано задание: написать программу, которая генерирует сто случайных вещественных чисел и заполняет ими список. Выводит получившийся список на экран по десять элементов в ряд. Далее сортирует список с помощью метода sort() и снова выводит его на экран по десять элементов в строке. Для вывода списка напишите отдельную функцию, в качестве аргумента она должна принимать список. а если чисел будет 100++++++, можно ли как-то отформатировать вывод?
def PrintList(c):
print(c[0:10], c[10:20], c[20:30], c[30:40], c[40:50], c[50:60],
c[60:70], c[70:80], c[80:90], c[90:100], sep='\n')
def PrintSortList(c):
c.sort()
print(c[0:10], c[10:20], c[20:30], c[30:40], c[40:50], c[50:60],
c[60:70], c[70:80], c[80:90], c[90:100], sep='\n')
import random
c = []
i = 0
while i < 100:
c.append(round(random.random(), 2))
i += 1
Ответы (3 шт):
вот так что ли нужно?
import random
# сгенерируем 105 случайных чисел (чтобы проверить и не кратные 10 случаи)
data = [random.random() for _ in range(105)]
# формируем список строк в каждой из которых по 10 чисел
res = [' '.join(map(str, data[i:i+10])) for i in range(0, len(data), 10)]
# выводим список в столбик
print(*res, sep='\n')
# сортируем сгенерированный список
data.sort()
# формируем список строк в каждой из которых по 10 чисел
res = [' '.join(map(str, data[i:i+10])) for i in range(0, len(data), 10)]
# выводим список в столбик
print(*res, sep='\n')
В задании было сказано
Для вывода списка напишите отдельную функцию, в качестве аргумента она должна принимать список.
Функция dump печатает правильно отформатированный список любой длины:
import random
def dump(lst, size=10):
for i in range(0, len(lst), size):
print(*lst[i:i + size])
data = [round(random.random(), 2) for _ in range(105)]
dump(data)
data.sort()
dump(data)
вариант решения с использованием генератора:
from random import choices
c = choices(range(10),k=105) # список случайных чисел
def it(l):
while l:
yield l[:10] # генератор выдает по порядку по 10 элементов
l = l[10:]
def print_list(n):
for i in it(n): print(*i) # в цикле обращаемся к генератору и выводим на печать
print_list(c)
print_list(sorted(c))
'''
4 5 5 8 1 1 1 6 3 4
3 9 4 5 9 2 1 2 9 6
2 7 9 5 4 6 1 8 6 5
1 3 6 7 1 0 9 5 7 2
1 7 1 2 4 3 7 1 8 6
5 4 8 0 3 7 5 1 0 4
8 8 6 1 4 3 2 9 8 4
3 9 3 7 9 9 1 3 8 4
6 3 6 5 9 5 3 3 0 7
0 6 8 2 7 4 1 1 7 3
1 9 7 6 9
0 0 0 0 0 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 3 3
3 3 3 3 3 3 3 3 3 3
3 4 4 4 4 4 4 4 4 4
4 4 5 5 5 5 5 5 5 5
5 5 6 6 6 6 6 6 6 6
6 6 6 7 7 7 7 7 7 7
7 7 7 7 8 8 8 8 8 8
8 8 8 9 9 9 9 9 9 9
9 9 9 9 9