где все элементы составляющие главную диаганаль(тоесть а аресами 0,0 1,1 2,2 и т.д) равны единице. Остальные элементы навны нулю.
Нулевую матрицу(тоесть где все нули) генерирую так:
for i in range(_n): self.matrix.append([0] * _m)
А единичную как?
for i in range(_n): self.matrix.append([0] * _m)
self.matrix = [[0 if i-j else 1 for j in range(n)] for i in range(n)]
>>> matrix = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> for i, x in enumerate(matrix): ... x[i] = 1 ... >>> matrix [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
Areostarтак там нет генератора
Спасибо! первый вариант куда изяшнее! я спрашивал именно генератор
ramiинтересно while как то можно использовать в генераторах списков?self.matrix = [[0 if i-j else 1 for j in range(n)] for i in range(n)]
AD0DE412
while
AD0DE412???
за место if
j = 0 [(цикл_с_условием while i < 10 or j < 10 если_верно_что_то_ делает_с j) for i in iter]
AD0DE412ключевое отличие for от while -это наличие счетчика. Вот такая конструкция, которую вы называете генератором (чем вводите в заблуждение)
не знаю зачем такое, просто подумалось … while это же цикл с уловием (как и for конечно, ну там - пока есть порох в поро…)
зы в интернетах чего то подобного нет, скорее всего эт так не работает и/или не нужно (мною все еще э ммм э не обдумано че да как и зачем)
l = [x for x in iterable if cond]
l = map(lambda x: x, filter(lambda i: cond, iterable))
l = [] for x in iterable: if cond: l.append(x)
FishHookвроде как да (эээ как мне кажется, тут больше подойдут слова - сравнение элемента(элементов) c (необязательная часть) изменением элемента сравнения в цикле пока сравнение выдает True), кроме того, как оказалась, генеретор списков это просто эээ фишка такая в python, способ сокращенной записи.
ключевое отличие for от while - это наличие счетчика
FishHookплюс добавляет в язык немного функцианального программирования(в душе не ведаю что такое)
во что должна транслироваться ваша конструкция решительно неясно.
FishHookспсб за ответ
разворачиается вот в такой map
l = map(lambda x: x, filter(lambda i: cond, iterable))
# https://habr.com/ru/post/320288/ import itertools inf_gen = (x for x in itertools.count()) # бесконечный генератор от 0 to бесконечности!