@Sunter

Каким образом можно сократить код?

Недавно только начал изучать питон(многомерные массивы), хотелось бы узнать полезные трюки, функции, которыми можно сократить код
k = 1
a = []
for i in range(3):
	a.append([])
	for j in range(3):
		a[i].append(k)
		k = k + 1
for i in range(3):
	print(*a[i])
  • Вопрос задан
  • 180 просмотров
Решения вопроса 2
MinTnt
@MinTnt
Любитель однострочников (Версия 1.106)
Если нужно именно сократить, без сильных изменений в самом коде... то придётся пожертвовать временем исполнения...
(locals().update({'k': 1, 'a': []}), [(a.append([]), [(a[i].append(k), loc.update({'k': k+1})) for j in range(3)]) for loc in [locals()] for i in range(3)], [print(*a[i]) for i in range(3)])

...но в принципе это всё возможно.

Ну а вообще, чтобы сократить написанное, можно
a = [[k for k in range(x, x+3)] for x in range(1, 10, 3)]
for i in a:
    print(*a)
Ответ написан
aRegius
@aRegius
Python Enthusiast
Навскидку:
spoiler
a = []
for i in range(3):
    a.append([])
# --- --- ---
a = [[] for _ in range(3)]

k = 1
a = []
for i in range(3):
    ...
    k = k + 1
# --- --- ---
a = [[i, i+1, i+2] for i in range(1, 8, 3)]

for i in range(3):
    print(*a[i])
# --- --- ---
for i in a:
	  print(*i)

Ну а лучше всего знать возможности языка и предоставляемые им библиотеки/решения и пользоваться ими - я бы решал вашу задачу так:
from more_itertools import chunked

a = list(chunked(range(1, 10), 3))
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Bad-Coder
@Bad-Coder
Srenior Pityhon Developer
Python-Minifer.
Или
Пробуйте сами сжимать.
Пример:
k=1;a=[]
for i in range(3):
    a.append([])
    for j in range(3):a[i].append(k);k=k+1
for i in range(3):print(*a[i])

Было строк: 9,
Стало: 5.
Но не рекомендую так делать, код стает менее читаемым.
Ответ написан
@mxrdxfxrrx
flstudio20, py3.x
Все и так кратко.
Ответ написан
HemulGM
@HemulGM
Delphi Developer, сис. админ
Найди библиотеку в сети, которая делает то, что ты хочешь, в питоне же так принято делать (стёб)
Ответ написан
@alexbprofit
Junior SE
k = 1
a = []
for i in range(3):
  a.append([])
  for array in a:
    array.append(k)
    k += 1
for array in a:
  print(*array)

более читаемый код
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы