@@user-ks7vk3ip6i ну смотря что считать джуном , на работу еще не берут, но какйнибудь сайт или скрипт небольшой написать могу. Сейчас на джуна требования как на синьера
Большое спасибо, ваша подача + нормальное объяснение дает возможность понять что такое вложенные списки и как с ними работать! По моему мнению это видео одно из лучших для начального ознакомления со вложенностями!
Спасибо огромное! Прочитала разные объяснения на форумах про вложенные списки, но ваше самое понятное и доступное:) Рада быть спонсором вашего канала. У вас качественный контент.
спасибо за уроки. Пересмотрела много видео про вложенные списки, поняла наконец, по вашему объяснению. Наглядно и понятно! Спасибо огромное. 2 недели изучаю, но застряла на вложенных циклах, как-то трудно было представить, а тут всеп понятно. Благодарю!
13:35 заполнение вложенного списка с клавиатуры. Используется дополнительный временный список, для хранения элементов одной строки. А потом за один раз всю эту строку добавляем в основной список. Очень понятно видео, спасибо.
Транспонирование 1: a = [] b = [] n = int(input('n: ')) for i in range(n): a.append(list(map(int, input(' ').split()))) for i in range(n): b.append([0]*n) for i in range(n): for j in range(n): b[j][i] = a[i][j] for i in b: print(i)
гайсы, я тут немного экспериментировал во время видео, и обнаружил что если вместо новой инициализации списка b = [ ] в цикле применить b.clear() то результат будет совершенно иной. Это взорвало мне мозг! Короче получается что после clear() конечный список 'a' хранит в себе сука ссылки на ту же память что и 'b', просто вывод дважды один и тот же список! это значит что если менять содержимое 'b' то и содержимое 'a' меняется. НО! Если применить инициализацию b = [ ] то все работает как надо, и в конечном списке 'a' будут копии данных из 'b' каждой итерации внутреннего цикла! a = [ ] b = [ ] l = int(input()) # line c = int(input()) # column for i in range(l): b.clear() < ---- дело все в этом. у автора тут b = [ ] for j in range(c): b.append(int(input())) a.append(b) for i in a: print(i) Входные данные: 2 2 3 4 6 7 Результат: [6, 7] # это текущее состояние b [6, 7] # выходит что а просто ссылается на ту же память применение clear() >>> a = [] >>> b = [] >>> a = [1, 1, 1, 1] >>> b [] >>> a [1, 1, 1, 1] >>> b.append(a) >>> b [[1, 1, 1, 1]] >>> a.clear() # воздействуем на a >>> b [[]] # и b изменился тоже! т.е. b ссылается на ту же память что и а >>> a [] >>> >>> применение инициализации >>> >>> a = [] >>> b = [] >>> a = [1, 1, 1, 1] >>> b.append(a) >>> b [[1, 1, 1, 1]] >>> a [1, 1, 1, 1] >>> a = [] # а вот после такого воздействия на а, дающего такой же результат что и a.clear() >>> a
[] >>> b # для b выделяется свою память и b не реагирует на изменения в а [[1, 1, 1, 1]]
Спасибо за материал. Очень подробно и понятно! Автор молодчина. Только почему в конце матрица не сработала, когда число строк стало 5?. Первая цифра 3 (индекс 0,0), а должна быть 10(а она с индексом 0,1 уже получается). Или я что то не понял?
Хотелось бы отдельно уроки по PyCharm типа как смотреть работу переменных, в роликах это не особо рассказывается и приходится по нескольку раз перематывать чтоб понять что там нажали.
То, как я решил задачу "Спираль" /---------------------------------- n = int(input()) a = [] for i in range(n): a.append([0] * n) i = 1 aX = 0 aY = 0 direction = 1 # 1 right # 2 down # 3 left # 4 up while i < n*n: while direction == 1: if aY < n - 1 and a[aX][aY + 1] == 0: a[aX][aY] = i aY += 1 i += 1 else: direction = 2 while direction == 2: if aX < n - 1 and a[aX + 1][aY] == 0: a[aX][aY] = i aX += 1 i += 1 else: direction = 3 while direction == 3: if aY > 0 and a[aX][aY - 1] == 0: a[aX][aY] = i aY -= 1 i += 1 else: direction = 4 while direction == 4: if aX > 0 and a[aX - 1][aY] == 0: a[aX][aY] = i aX -= 1 i += 1 else: direction = 1 a[aX][aY] = i for i in range(n): for j in range(n): print(a[i][j], end=' ') print()
Артем, подскажите, пожалуйста, почему при выводе строк в обратном порядке, в цикле for i range(2, -1, -1) вы пишите вторым элементом -1, если нужен обход но ноля. (откуда идем, до куда идем, с каким шагом), не понял почему там -1. Спасибо!
Огромное спасибо за видео. Вопрос. 12:00. range(3) и range(4). Как они понимают что есть столбец а что есть строка. Само определяет где есть такая длина? Спасибо
Вложенные списки - это строки, которые в видео индексируются [ i ]. А из-за того, что они являются элементами главного списка, то и индексируются в первую очередь. Столбцы составляются из элементов вложенных списков (строк) с одинаковыми индексами. Поэтому, т.к. столбцы состоят из элементов вложенных списков, то и индексируются они вторыми. В видео использовали индексацию столбцов [ j ]. Вообще, использовать "i" и "j" в циклах - это своеобразное негласное правило в программировании. Думаю, ответ исчерпывающий :)
@@serhiisvyst4489 Не верный ответ. Просто после циклов он пишет print a[i][j]. Соответственно и выводится так - i первый индекс - номер строки, j - второй индекс - номер столбца. А как вы эти переменные назовёте это не важно. Важно что вы запросите на печать
Артем, могли бы вы подсказать с задачей acmp.ru/asp/do/index.asp?main=task&id_course=1&id_section=8&id_topic=120&id_problem=746? Не совсем понятно, как считывать данные, когда между матрицами пробел.
подскажите пожалуйста. на степике решил задачу состязания. решил пошагово. сначала ввел количество n и m, потом заполнил матрицу путем добавления потом прошел по значениям и суммировал результаты каждого и вывел максимальное значение. но посмотрев решения других участников обучения я не совсем понял некоторые моменты и вспомнил что такие моменты уже были в предыдущих задачах. вот строка в которой L присваевается прям сразу пол задачи n, m = map(int, input().split()) L = [[int(i) for i in input().split()] for i in range(n)] S = [sum(i) for i in L] print(max(S), S.index(max(S)), sep=' ') не могли бы вы пошагово расписать происходящее в этой строке или в этой где a присваевается решение в одну строку. и зачем в конце первой строки стоит список из одного нуля n = int(input().split()[0]) a = [sum(list(map(int, input().split()))) for _ in range(n)] print(max(a), a.index(max(a)), sep=' ') честно говоря я почувствовал себя умственно хуже чем чувствовал до этого потому что ребята находящиеся на том же месте в обучении что и я сделали что то, что мне не совсем понятно
Смотря что вы хотите вывести... Если только 1 элемент из списка, то можно использовать индексацию, т.к. списки это позволяют. Например: A = [ 1, 2, 3, 56, 3.7, "Hello" ] print( A[ 0 ] , A[ -1 ] ) # Вывод: >>> 1 Hello Индекс [ -1 ] означает, что берётся последний элемент итрерируемого объекта (списка). Ну, а т.к. в Python отсчёт идет не с 1, а с 0, то чтобы вывести первый элемент, используем [ 0 ]. Если хотите вывести некоторую часть / отрывок из списка, то используйте "вырезку". Это долго объяснять, но тема очень простая, и легко найти подходящий видеоурок. Пример вырезки: B = [ ' q ', 1 , 728.4 , ' python ' ] print( B[ 1 : 3 ] ) # Вывод: >>> [ 1 , 728.4 ] Как видим, в вырезках второй элемент, который определяет до какого элемента вырезать, не включается в саму вырезку.
Товарищи, подскажите, просмотрев все видео, кроме спонсорских можно на основании полученных знаний поменять строки местами? Не могу решить задачу красивая матрица. Ответ знаю, что максимум за 4 раза можно в центр поместить однерку при условии, что она в одном из углов. А как менять строки в ту или другую сторону не могу додуматься. Кода не жду, хотя бы направление куда двигаться исходя из пройденных курсов без всяких matrix и пр. Того чего ещё не было. Дело принципа. Мысль такая ещё, что строка это индекс i списка и соответственно поменять строки это поменять значения под данным индексом. Т.е. я должен обойти строку идентифицировать в этой строке 1, если она есть то поменять следующую строку с текущей ( если в индексах то а[i] на а[i+1]) Пока пишу мысль развивается...может нужен промежуточный список, куда складывать данные...
Легкий способ научиться рисовать сову. 1. Рисуем круг - это будет голова совы. 2. Рисуем овал впритык к кругу - это будет тело совы. 3. Рисуем остальную сову. Примерно так я понимаю это видео)))
Подскажите, пожалуйста, как в задаче "Симпатичный узор" так написать код, чтобы выдавало одно значение "yes" при симпатичном узоре? a = [] for i in range(4): b = [] for j in range(4): b.append(input()) a.append(b) for i in a: print(i) for i in range(4): for j in range(4): if a[i][j] == a[i][j+1] and a[i][j] == a[i+1][j+1] and a[i][j] == a[i+1][j]: print("yes") else: print("no") Если ставлю счетчик, чтобы выдало yes по условию, то программа выдает ошибку: "IndexError: list index out of range". На break же программа не реагирует продолжая заход на следующую строку по циклу.
Изначально задать переменной значение ответа, которое будет изменяться в случае выполнения условной конструкции. flag = 'Yes' for i in range(len(m)-1): for j in range(len(m[i])-1): if (m[ i ][ j ] == m[ i ][ j+1 ] == m[ i+1 ][ j ] == m[ i+1 ][ j+1 ]): flag = 'No' print(flag) Чтобы избежать ошибки "list index out of range", т.е выхода за пределы списка, перебираем значения, не включая последнее как по строкам, так и по столбцам.
Можно через цикл/ генератор списков преобразовать каждый подмассив основного массива. array = [ [1,2,3], [4,5,6], [7,8,9] ] new_array = [ ] for subarray in array: new_array.append(tuple(subarray)) / new_array = [tuple(subarray) for subarray in array]
Эхэхэх из уважения к потраченным деньгам не буду называть платный курс, который дз все от сюда взял (ну или очень похоже), а также вообще эту тему не раскрыл. Четко как чичётка спасибо автору.
Замечание. Про обратный обход. Ведь можно ренжировать в обратном порядке, тоесть: for i in reversed(range(3)) for j in reversed(range(3)) Везде 3, т.к копировал у себя. Опять же, так я думаю, несколько проще, просто дописать reversed()
Сумма матриц: n, m = map(int, input(' ').split()) matrix1 = [] matrix2 = [] resmatrix = [] for i in range(n): matrix1.append(list(map(int, input(' ').split()))) print() for i in range(n): matrix2.append(list(map(int, input(' ').split()))) for i in range(n): resmatrix.append([0]*m) for i in range(n): for j in range(m): resmatrix[i][j] = matrix1[i][j] + matrix2[i][j] print(resmatrix)
Могу дать совет. Напишите такую же программу в PyCharm и с помощью команды Debug понаблюдайте за каждым действием программы. Тогда все становится намного понятнее
Здравствуйте, я не очень хорошо понял как реализовать 2-ю задачу, где необходимо обойти элементы матрицы сверху вниз слева направо, а не понимаю как это сделать если у нас количество столбцов = количеству строк. Помогите пожалуйста. n = int(input()) a = [] for i in range(n): a.append(list(map(int, input().split()))) for i in range(n): for j in range(n): print(a[i][j],end=' ') print() вот до чего только додумался, а вот как поменять не понимаю (
Транспонирование - 1: n = int(input()) a = [] for i in range(n): a.append(list(map(int, input().split()))) for i in range(len(a)): for j in range(len(a)): print(a[j][i], end=' ') print()
Транспонирование - 2: n = int(input()) a = [] for i in range(n): a.append(list(map(int, input().split()))) for i in range(len(a)): for j in range(len(a)): print(a[n - 1 - j][n - 1 - i], end=' ') print()
Транспонирование - 3: n ,m = map(int, input().split()) a = [] for i in range(n): a.append(list(map(int, input().split()))) for i in range(n): for j in range(m - 1, -1, -1): print(a[i][j], end=' ') print()
Красивая матрица: a = [] for i in range(5): a.append(list(map(int, input().split()))) for i in range(5): for j in range(5): if a[i][j] == 1: m = max(i, 2) - min(i, 2) + max(j, 2) - min(j, 2) print(m)
Транспонирование - 4: n, m = map(int, input().split()) a = [] for i in range(n): a.append(list(map(int, input().split()))) for i in range(n): for j in range(m): print(a[abs(i - n + 1)][j], end=' ') print()
Сумма главной диагонали: n = int(input()) a = [] s = 0 for i in range(n): a.append(list(map(int, input().split()))) for i in range(n): for j in range(n): if i == j: s += a[i][j] print(s)
Разберите, пожалуйста для спонсоров эту задачу: Вам нужно посчитать сумму элементов двумерного квадратного (NxN) списка, которые расположены на главной диагонали. Программа сперва принимает на вход число N (N
Когда мы чисто механически меняем местами "for i in... " на "for j in..." как программа понимает, что мы ей говорим идти по столбцам, а не по строкам? У меня этот вопрос возник, сразу по ходу урока, потом пытался найти ответ, но не нашел. В примере количество элементов в строке и столбцах разное и возможно поэтому питон понимает по какому ренжу идти. А если будет одинаковое??? Две совершенно одинаковые строчки поменяли местами и что???
Так понял, смотрите для простоты понимания давайте уйдём от абстрактных i j и представим это как row - строка col - столбец представим матрицу 5 на 5, так вот в цикле for row in range(5) for col in range(5) a[row][col] == ... тут первый цикл row и поэтому пока не пройдёт весь цикл col значение row будет 0 (т.е проходим по первой строке) и только после того как мы пройдём по всем столбцам нулевой строки, значение row станет 1. А в цикле: for col in range(5) for row in range(5) a[row][col] == ... col первый цикл и пока мы не пройдём по всем строкам нулевого(фактически первого) cтолбца значение col будет равно 0, после прохода по всем рядам col станет 1 и опять бегаем по строкам. Стоит обратить внимание на то что при когда мы меняем циклы местами мы не меняем местами переменные a[row][col] на a[col][row] т.к это не имеет смысла и сводит все перемены циклов на нет. Надеюсь хоть одному человеку мой комментарий поможет.
Здравствуйте! Возможно мне не ответят, но информацию все равно найти не могу. Объясните пожалуйста, как без ввода значений элементов I и j, через range , функция понимает что I это строка, а j это столбец. И при перемене местами( где j мы ставим в первом цикле, а I в вложенном) python все равно считывает j как столбец, а не строку? При этом если ввести квадратную матрицу, функция тоже понимает где I это строка, j столбец. Спасибо за уроки.
a=int(input()) t=[] count=0 for i in range(a): b=list(map(int,input().split())) t=t+[b] for j in range(a): for j2 in range(a): if t[j][j2]!=t[j2][j]: count+=1 if count==0: print('yes') else: print('no')
как-то неправильно у меня отображаются списки, не понял, в чём проблема(в строчку): sun9-58.userapi.com/impg/VSPZK6fw40gJ5hoUHo-iENO6qWk0sm1du4rkkQ/eGTdL-W3_3c.jpg?size=1280x701&quality=96&sign=69291d262611180cb8844da261f95454&type=album
подскажите пожалуйста пишу так a = [ [3, 4, 5, 8], [2, 6, 78, 14], [10, 11, 12, 15] ] for i in range(3): for j in range(4): print(a[i][j]) а при нажатии run выдает ошибку File "C:/Users/Acer/PycharmProjects/untitled/рабочий 3.py", line 8 print(a[i][j]) ^ IndentationError: expected an indented block Process finished with exit code 1
Спасибо за видео . учу питон уже месяц . благодаря вам стал ощущать себя намного тупее чем раньше )
Так тебе помогло видео или нет?
хаахахахахахахаха
@@SigmaTroon да , лучший канал
@@user-xz4fc6fv5r и как уже успехи в изучении ? Стал джуном ?
@@user-ks7vk3ip6i ну смотря что считать джуном , на работу еще не берут, но какйнибудь сайт или скрипт небольшой написать могу. Сейчас на джуна требования как на синьера
Эта тема про матрицы сложнее даже, чем функции))))
А как насчёт dataframe-ов?)
коротко и без воды. супер. Спасибо за труд.
Спасибо за урок, отличный материал и подача. Без суеты, без спешки и все понятно. Супер
Отличный видеоурок, очень хорошее объяснение. Не понимал как работать с диагональю, а теперь есть хотя бы представление. Спасибо
Большое спасибо, ваша подача + нормальное объяснение дает возможность понять что такое вложенные списки и как с ними работать! По моему мнению это видео одно из лучших для начального ознакомления со вложенностями!
Спасибо огромное! Прочитала разные объяснения на форумах про вложенные списки, но ваше самое понятное и доступное:) Рада быть спонсором вашего канала. У вас качественный контент.
спасибо, очень приятно)
спасибо за урок ! это уже какой то новый уровень! буду осваивать! Спасибо за ваши труды!
очень доволен этим уроком, очень хорошо объясняете, удачи вам во всех начинаниях!
Первое просмотренное видео на канале. После 5 минут захотелось поставить лайк. Грамотное объяснение и сопровождение!
Самые подробные видео из всех, что встречал на ютубе. Спасибо вам большое
спасибо за уроки. Пересмотрела много видео про вложенные списки, поняла наконец, по вашему объяснению. Наглядно и понятно! Спасибо огромное. 2 недели изучаю, но застряла на вложенных циклах, как-то трудно было представить, а тут всеп понятно. Благодарю!
Такая же ситуация, застрял)) Материал очень хорошо изложен, спасибо автору.
Огромное спасибо вам за ваши уроки! Благодаря вам я начал понимать в языке и теперь занимаюсь по вашим видео
Артем, СПАСИБО огроменное за проделанную работу! Только благодаря Вашим доходчивым словам Пайтон дается легко и просто :)
нет
Ну не легко, но намного проще чем могло бы быть
Все супер объяснили!! Огромная благодарность!
13:35 заполнение вложенного списка с клавиатуры.
Используется дополнительный временный список, для хранения элементов одной строки. А потом за один раз всю эту строку добавляем в основной список.
Очень понятно видео, спасибо.
Бро ты лучшее всех!!! Такому материала не ожидать. Молодец
Спасибо все очень понятно. Усвоил то что до этого не мог понять!
Лайк поставил! И подписался.
Артем, большое спасибо за твой труд.
Отличная подача материала. 5+
Спасибо большое! Очень доходчиво и понятно!
Спасибо. Полезный материал
Артём, благодарю! 👍 🔥🔥🔥
Хорошее оъьяснение, но с первого раза мало что понял.Только начало.,Будем смотреть еще и еще раз!
Огромное спасибо за этот урок
Благодаря тебе я выучил питон и теперь легко даются другие языки. Спасибо за это огромное
Здравствуйте. За сколько вы выучили?
@@barbi8271 за год не постоянных тренировок в этой сфере
@@user-ch1ny3xx7p я уже все. Ничего не хочу
@@barbi8271 Не сдавайся! Мы тупенькие, но упорные! В этом нужно просто постоянно вариться!
@@barbi8271 Не повторяй моих ошибок.Лучше не забрасыв учёбу
Огромное спасибо!!!
Очень круто!
ТОПОВЫЙ КУРС!
спасибо за лекцию, жаль выбрал не ваш курс на степике!
Спасибо!
После этой темы уже можно сделать небольшую игру или первую настоящую программу )))))Большое спасибо
Спасибо огромное!Все просто и понятно👏
Транспонирование 1:
a = []
b = []
n = int(input('n: '))
for i in range(n):
a.append(list(map(int, input(' ').split())))
for i in range(n):
b.append([0]*n)
for i in range(n):
for j in range(n):
b[j][i] = a[i][j]
for i in b:
print(i)
Спасибо вам,не такая сложная тема,главное не вставать пока не поймёшь
всё очень понятно, спасибо за уроки
мужик, ты лучший, лучше обьясняешь чем наш препод в универе
Большое спасибо! Нашел много интересного и полезного для себя.
Большое спасибо я на конец то понял эту тему
спасибо за видео, жду продолжения
Спасибо.
лайк! очень годно :)
Thank you
спасибо спасибо спасибо!
Как же это сцуко элегантно!!!
Нет ни слова про определитель матрицы. Хорошо, что есть Numpy)))
Cпасибо
гайсы, я тут немного экспериментировал во время видео, и обнаружил что если вместо новой инициализации списка b = [ ] в цикле применить b.clear() то результат будет совершенно иной. Это взорвало мне мозг! Короче получается что после clear() конечный список 'a' хранит в себе сука ссылки на ту же память что и 'b', просто вывод дважды один и тот же список! это значит что если менять содержимое 'b' то и содержимое 'a' меняется. НО! Если применить инициализацию b = [ ] то все работает как надо, и в конечном списке 'a' будут копии данных из 'b' каждой итерации внутреннего цикла!
a = [ ]
b = [ ]
l = int(input()) # line
c = int(input()) # column
for i in range(l):
b.clear()
< ---- дело все в этом. у автора тут b = [ ]
for j in range(c):
b.append(int(input()))
a.append(b)
for i in a:
print(i)
Входные данные:
2
2
3
4
6
7
Результат:
[6, 7] # это текущее состояние b
[6, 7] # выходит что а просто ссылается на ту же память
применение clear()
>>> a = []
>>> b = []
>>> a = [1, 1, 1, 1]
>>> b
[]
>>> a
[1, 1, 1, 1]
>>> b.append(a)
>>> b
[[1, 1, 1, 1]]
>>> a.clear()
# воздействуем на a
>>> b
[[]]
# и b изменился тоже! т.е. b ссылается на ту же память что и а
>>> a
[]
>>>
>>>
применение инициализации
>>>
>>> a = []
>>> b = []
>>> a = [1, 1, 1, 1]
>>> b.append(a)
>>> b
[[1, 1, 1, 1]]
>>> a
[1, 1, 1, 1]
>>> a = []
# а вот после такого воздействия на а, дающего такой же результат что и a.clear()
>>> a
[]
>>> b
# для b выделяется свою память и b не реагирует на изменения в а
[[1, 1, 1, 1]]
>>>
Спасибо бро ну тема очень тяжелая
Спасибо за помащ
и подписался, и лайк нажал, и колокольчик жмякнул, и коммент оставил.
очень интересно подано и разжевано.
Большое спасибо!очень доходчиво и просто
Спасибо за материал. Очень подробно и понятно! Автор молодчина. Только почему в конце матрица не сработала, когда число строк стало 5?. Первая цифра 3 (индекс 0,0), а должна быть 10(а она с индексом 0,1 уже получается). Или я что то не понял?
Все правильно, первая 10, просто быстро листает
боже спасибо
Лучший
Хотелось бы отдельно уроки по PyCharm типа как смотреть работу переменных, в роликах это не особо рассказывается и приходится по нескольку раз перематывать чтоб понять что там нажали.
По шагову роботу кода можна нажав на кнопку дебагер в пайчарме
То, как я решил задачу "Спираль"
/----------------------------------
n = int(input())
a = []
for i in range(n):
a.append([0] * n)
i = 1
aX = 0
aY = 0
direction = 1
# 1 right
# 2 down
# 3 left
# 4 up
while i < n*n:
while direction == 1:
if aY < n - 1 and a[aX][aY + 1] == 0:
a[aX][aY] = i
aY += 1
i += 1
else:
direction = 2
while direction == 2:
if aX < n - 1 and a[aX + 1][aY] == 0:
a[aX][aY] = i
aX += 1
i += 1
else:
direction = 3
while direction == 3:
if aY > 0 and a[aX][aY - 1] == 0:
a[aX][aY] = i
aY -= 1
i += 1
else:
direction = 4
while direction == 4:
if aX > 0 and a[aX - 1][aY] == 0:
a[aX][aY] = i
aX -= 1
i += 1
else:
direction = 1
a[aX][aY] = i
for i in range(n):
for j in range(n):
print(a[i][j], end=' ')
print()
Слишком быстро. Но, контент, очевидно полезнейший.
Артем, подскажите, пожалуйста, почему при выводе строк в обратном порядке, в цикле for i range(2, -1, -1) вы пишите вторым элементом -1, если нужен обход но ноля. (откуда идем, до куда идем, с каким шагом), не понял почему там -1.
Спасибо!
я о том, как функция range работает в отдельном видео рассказывал
ruclips.net/video/9J0fvF4k4F4/видео.html
@@egoroffchannel Точно, -1 не включая это число, то есть до ноля.
Спасибо!
А можно ли изменять букву которую мы вытащили из списка например : a[1][0].upper() , если да то как сделать первую заглавную букву?
У строк есть метод capitalize(). Он так раз делает первую букву заглавной, все остальные маленькие
подскажите условие if для вывода обратной диагонали матрицы, пробовал что то вроде:
if i == -j:
или даже
if i ==(-j-1):
ны работаэт =(
Огромное спасибо за видео. Вопрос. 12:00. range(3) и range(4). Как они понимают что есть столбец а что есть строка. Само определяет где есть такая длина? Спасибо
Вложенные списки - это строки, которые в видео индексируются [ i ]. А из-за того, что они являются элементами главного списка, то и индексируются в первую очередь.
Столбцы составляются из элементов вложенных списков (строк) с одинаковыми индексами. Поэтому, т.к. столбцы состоят из элементов вложенных списков, то и индексируются они вторыми. В видео использовали индексацию столбцов [ j ].
Вообще, использовать "i" и "j" в циклах - это своеобразное негласное правило в программировании.
Думаю, ответ исчерпывающий :)
@@ArseniyBendyukov Да. Спасибо!
@@ArseniyBendyukov чувак, я полностью скопировал код, и он у меня почему то не работает
@@serhiisvyst4489 Не верный ответ. Просто после циклов он пишет print a[i][j]. Соответственно и выводится так - i первый индекс - номер строки, j - второй индекс - номер столбца. А как вы эти переменные назовёте это не важно. Важно что вы запросите на печать
Видео этого канала как буст на ускорение разработки первого скрипта, начинающего програмистера)
Артем, могли бы вы подсказать с задачей acmp.ru/asp/do/index.asp?main=task&id_course=1&id_section=8&id_topic=120&id_problem=746? Не совсем понятно, как считывать данные, когда между матрицами пробел.
ruclips.net/video/pbQ4eu_9C3s/видео.html
Комментарии для поддержки канала 🖐️😉
Даладно и вот это 7:00 я искал пол дня что бы сделать формулу для линейной алгебры и в итоге не нашёл и решил повторить синтаксис.
Разбор задач
Транспонирование 2 - ruclips.net/video/QfqcqeTrSR0/видео.html
Сумма главной диагонали ruclips.net/video/Gyvvs9Ltr9Q/видео.html
Симметричная ли матрица - ruclips.net/video/JEu4oF3l7w4/видео.html
Красивая матрица - ruclips.net/video/6TXtHdiyyCo/видео.html
Сумма матриц - ruclips.net/video/pbQ4eu_9C3s/видео.html
Подарок для Лены - ruclips.net/video/YSqZmLr9uss/видео.html
Спираль ruclips.net/video/mHTMe_Q4-Xo/видео.html
Морской бой 2 ruclips.net/video/BA9zmfQyfdo/видео.html
Состязания-3 ruclips.net/video/_tzOEBBFkJs/видео.html
Вам следует закрепить этот комментарий
подскажите пожалуйста. на степике решил задачу состязания.
решил пошагово. сначала ввел количество n и m, потом заполнил матрицу путем добавления
потом прошел по значениям и суммировал результаты каждого и вывел максимальное значение.
но посмотрев решения других участников обучения я не совсем понял некоторые моменты
и вспомнил что такие моменты уже были в предыдущих задачах.
вот строка в которой L присваевается прям сразу пол задачи
n, m = map(int, input().split())
L = [[int(i) for i in input().split()] for i in range(n)]
S = [sum(i) for i in L]
print(max(S), S.index(max(S)), sep='
')
не могли бы вы пошагово расписать происходящее в этой строке
или в этой где a присваевается решение в одну строку. и зачем в конце первой строки
стоит список из одного нуля
n = int(input().split()[0])
a = [sum(list(map(int, input().split()))) for _ in range(n)]
print(max(a), a.index(max(a)), sep='
')
честно говоря я почувствовал себя умственно хуже чем чувствовал до этого
потому что ребята находящиеся на том же месте в обучении что и я сделали
что то, что мне не совсем понятно
Генераторы списков посмотри видео
а можно вопрос, вы показали как обращаться к числам в списке, а как их выборочно выводить?
В соответствии с индексом элемента?
Смотря что вы хотите вывести...
Если только 1 элемент из списка, то можно использовать индексацию, т.к. списки это позволяют. Например:
A = [ 1, 2, 3, 56, 3.7, "Hello" ]
print( A[ 0 ] , A[ -1 ] )
# Вывод: >>> 1 Hello
Индекс [ -1 ] означает, что берётся последний элемент итрерируемого объекта (списка). Ну, а т.к. в Python отсчёт идет не с 1, а с 0, то чтобы вывести первый элемент, используем [ 0 ].
Если хотите вывести некоторую часть / отрывок из списка, то используйте "вырезку". Это долго объяснять, но тема очень простая, и легко найти подходящий видеоурок.
Пример вырезки:
B = [ ' q ', 1 , 728.4 , ' python ' ]
print( B[ 1 : 3 ] )
# Вывод: >>> [ 1 , 728.4 ]
Как видим, в вырезках второй элемент, который определяет до какого элемента вырезать, не включается в саму вырезку.
Товарищи, подскажите, просмотрев все видео, кроме спонсорских можно на основании полученных знаний поменять строки местами? Не могу решить задачу красивая матрица. Ответ знаю, что максимум за 4 раза можно в центр поместить однерку при условии, что она в одном из углов. А как менять строки в ту или другую сторону не могу додуматься. Кода не жду, хотя бы направление куда двигаться исходя из пройденных курсов без всяких matrix и пр. Того чего ещё не было. Дело принципа.
Мысль такая ещё, что строка это индекс i списка и соответственно поменять строки это поменять значения под данным индексом. Т.е. я должен обойти строку идентифицировать в этой строке 1, если она есть то поменять следующую строку с текущей ( если в индексах то а[i] на а[i+1]) Пока пишу мысль развивается...может нужен промежуточный список, куда складывать данные...
Легкий способ научиться рисовать сову.
1. Рисуем круг - это будет голова совы.
2. Рисуем овал впритык к кругу - это будет тело совы.
3. Рисуем остальную сову.
Примерно так я понимаю это видео)))
Можно пожалуйста разобрать последнюю задачу, заполнение матрицы
Подскажите, пожалуйста, как в задаче "Симпатичный узор" так написать код, чтобы выдавало одно значение "yes" при симпатичном узоре?
a = []
for i in range(4):
b = []
for j in range(4):
b.append(input())
a.append(b)
for i in a:
print(i)
for i in range(4):
for j in range(4):
if a[i][j] == a[i][j+1] and a[i][j] == a[i+1][j+1] and a[i][j] == a[i+1][j]:
print("yes")
else:
print("no")
Если ставлю счетчик, чтобы выдало yes по условию, то программа выдает ошибку:
"IndexError: list index out of range". На break же программа не реагирует продолжая заход на следующую строку по циклу.
Изначально задать переменной значение ответа, которое будет изменяться в случае выполнения условной конструкции.
flag = 'Yes'
for i in range(len(m)-1):
for j in range(len(m[i])-1):
if (m[ i ][ j ] == m[ i ][ j+1 ] ==
m[ i+1 ][ j ] == m[ i+1 ][ j+1 ]):
flag = 'No'
print(flag)
Чтобы избежать ошибки "list index out of range", т.е выхода за пределы списка, перебираем значения, не включая последнее как по строкам, так и по столбцам.
Хм я всё понял,вчера читал в книге сегодня наткнулся на урок-всё чётко
Не скажите название книгу?
@@keramak Марк Лутс,Изучаем Пайтон. 5е издание.1часть
@@user-qs7st3sw8c спасибо
очень круто обьяснил , спасибо !
Здравствуйте,а как можно вложенные списки преобразовать в кортежи отдельные,чтоб 1 вложенный список стал кортежом,второй и тд?
Можно через цикл/ генератор списков преобразовать каждый подмассив основного массива.
array = [ [1,2,3],
[4,5,6],
[7,8,9] ]
new_array = [ ]
for subarray in array:
new_array.append(tuple(subarray))
/
new_array = [tuple(subarray) for subarray in array]
Эхэхэх из уважения к потраченным деньгам не буду называть платный курс, который дз все от сюда взял (ну или очень похоже), а также вообще эту тему не раскрыл. Четко как чичётка спасибо автору.
Реально круто, прошу рассмотреть возможность рассказать автору о себе, Ваш труд очень интересен.
да я что то стисняюсь камеры)
Замечание. Про обратный обход. Ведь можно ренжировать в обратном порядке, тоесть:
for i in reversed(range(3))
for j in reversed(range(3))
Везде 3, т.к копировал у себя. Опять же, так я думаю, несколько проще, просто дописать reversed()
или же range(len(n),-1,-1)
@@bohdankrutskevych7467 почему вторая граница -1? не могу понять.
@@user-nx4od7cp7m потому, что нижняя граница диапазона (start) включается в последовательность, а верхняя (stop) - нет
4:41 - а почему списки запринтились тоже с переносами на новую строку??
Сумма матриц:
n, m = map(int, input(' ').split())
matrix1 = []
matrix2 = []
resmatrix = []
for i in range(n):
matrix1.append(list(map(int, input(' ').split())))
print()
for i in range(n):
matrix2.append(list(map(int, input(' ').split())))
for i in range(n):
resmatrix.append([0]*m)
for i in range(n):
for j in range(m):
resmatrix[i][j] = matrix1[i][j] + matrix2[i][j]
print(resmatrix)
давайте видео по List Comprehensions пожалуйста, а то знаю немного с++ а преподаватель мой питоновский гамнокод не принимает(
про генераторы списков,я правильно понял?) если о них речь, то сперва мне надо про функции видео снять
egoroff_channel хорошо будем ждать спасибо за старание )
Спасибо огромное, подскажите пожалуйста, я не поняла задачу "красивое матрица", о чем она и что там надо делать?
Так разбор задачи есть)
@@egoroffchannel нету, я не могу понять саму смысл, откуда цифра 3 выходит, несколько раз прочитала то так и не поняла суть задачи.
@@As-hv9fj а где найти эту задачу
👏👍
а вот тут становится сложнее просто смотришь на программу и не понимаешь почему так, было бы сдорово если бы вы объясняли эти нюансы.
Могу дать совет. Напишите такую же программу в PyCharm и с помощью команды Debug понаблюдайте за каждым действием программы. Тогда все становится намного понятнее
❤️❤️❤️
Здравствуйте, я не очень хорошо понял как реализовать 2-ю задачу, где необходимо обойти элементы матрицы сверху вниз слева направо, а не понимаю как это сделать если у нас количество столбцов = количеству строк. Помогите пожалуйста.
n = int(input())
a = []
for i in range(n):
a.append(list(map(int, input().split())))
for i in range(n):
for j in range(n):
print(a[i][j],end=' ')
print()
вот до чего только додумался, а вот как поменять не понимаю (
Привет, так разбор задачи есть, я там объяснил как это делать
@@egoroffchannel что- то не могу найти в плейлисте, не могли бы вы ссылку дать, пожалуйста
@@user-yf7ce2xi6c закрепленный комментарий в этом видео, задача Транспонирование 2
Транспонирование - 1:
n = int(input())
a = []
for i in range(n):
a.append(list(map(int, input().split())))
for i in range(len(a)):
for j in range(len(a)):
print(a[j][i], end=' ')
print()
Транспонирование - 2:
n = int(input())
a = []
for i in range(n):
a.append(list(map(int, input().split())))
for i in range(len(a)):
for j in range(len(a)):
print(a[n - 1 - j][n - 1 - i], end=' ')
print()
Транспонирование - 3:
n ,m = map(int, input().split())
a = []
for i in range(n):
a.append(list(map(int, input().split())))
for i in range(n):
for j in range(m - 1, -1, -1):
print(a[i][j], end=' ')
print()
Красивая матрица:
a = []
for i in range(5):
a.append(list(map(int, input().split())))
for i in range(5):
for j in range(5):
if a[i][j] == 1:
m = max(i, 2) - min(i, 2) + max(j, 2) - min(j, 2)
print(m)
Транспонирование - 4:
n, m = map(int, input().split())
a = []
for i in range(n):
a.append(list(map(int, input().split())))
for i in range(n):
for j in range(m):
print(a[abs(i - n + 1)][j], end=' ')
print()
Сумма главной диагонали:
n = int(input())
a = []
s = 0
for i in range(n):
a.append(list(map(int, input().split())))
for i in range(n):
for j in range(n):
if i == j:
s += a[i][j]
print(s)
хотел на отладке посмотреть но она при запуске выдает это
pydev debugger: process 6388 is connecting
Connected to pydev debugger (build 193.6911.25)
все нормально, говорит что процесс отладки запущен
ниже этих слов вводи свои значения
15:24 я тут шоке так можно было
Mne interesno pochemy ia ne mogu predidushee video posmotret, kakoeto ogranichenia po memberam?! Ne podskajite problemu?!
Как ввести матрицу с клавиатуры, не задаваясь количеством строк и столбцов, имея в качестве окончания матрицы ключевое слово, к примеру, 'end'?
Разберите, пожалуйста для спонсоров эту задачу: Вам нужно посчитать сумму элементов двумерного квадратного (NxN) списка, которые расположены на главной диагонали.
Программа сперва принимает на вход число N (N
Ок
а ссылку на задачу можно?
А всё, смог сам)
блин, я только вот сегодня сделал
ruclips.net/video/Gyvvs9Ltr9Q/видео.html
Транспонирование - 1
Первая строка входного файла INPUT.TXT содержит натуральное число N
Подскажите пожалуйста как читать из текстового файла?
просто n=int(input())
print a[i][j] Выходит ошибка 'list indices must be integers or slices, not list". Может кто пояснить? Делал пошагово, как в видео.
Когда мы чисто механически меняем местами "for i in... " на "for j in..." как программа понимает, что мы ей говорим идти по столбцам, а не по строкам? У меня этот вопрос возник, сразу по ходу урока, потом пытался найти ответ, но не нашел. В примере количество элементов в строке и столбцах разное и возможно поэтому питон понимает по какому ренжу идти. А если будет одинаковое??? Две совершенно одинаковые строчки поменяли местами и что???
Смотри предыдущий урок про вложенные циклы
@@egoroffchannel Доехал) Спасибо!
@@2090520905 Не могли бы вы объяснить?
@@ymnop9652 Пересматривал, вникал, конспектировал прямо в IDLE и въехал. В беседе бы объяснил, пожалуй., а в переписке нет, не смогу,
Так понял, смотрите для простоты понимания давайте уйдём от абстрактных i j и представим это как row - строка col - столбец
представим матрицу 5 на 5, так вот в цикле
for row in range(5)
for col in range(5)
a[row][col] == ...
тут первый цикл row и поэтому пока не пройдёт весь цикл col значение row будет 0 (т.е проходим по первой строке) и только после того как мы пройдём по всем столбцам нулевой строки, значение row станет 1. А в цикле:
for col in range(5)
for row in range(5)
a[row][col] == ...
col первый цикл и пока мы не пройдём по всем строкам нулевого(фактически первого) cтолбца значение col будет равно 0, после прохода по всем рядам col станет 1 и опять бегаем по строкам.
Стоит обратить внимание на то что при когда мы меняем циклы местами мы не меняем местами переменные a[row][col] на a[col][row] т.к это не имеет смысла и сводит все перемены циклов на нет. Надеюсь хоть одному человеку мой комментарий поможет.
Здравствуйте! Возможно мне не ответят, но информацию все равно найти не могу.
Объясните пожалуйста, как без ввода значений элементов I и j, через range , функция понимает что I это строка, а j это столбец. И при перемене местами( где j мы ставим в первом цикле, а I в вложенном) python все равно считывает j как столбец, а не строку? При этом если ввести квадратную матрицу, функция тоже понимает где I это строка, j столбец. Спасибо за уроки.
Значение в print смотрите, которое местами не меняется поэтому при перемене местами i и j сначала выводится индекс вложенного цикла потом внешнего.
Здравствуйте, подскажите пожалуйста, Как решить задачу "Симметричная матрица"?
a=int(input())
t=[]
count=0
for i in range(a):
b=list(map(int,input().split()))
t=t+[b]
for j in range(a):
for j2 in range(a):
if t[j][j2]!=t[j2][j]:
count+=1
if count==0:
print('yes')
else:
print('no')
как-то неправильно у меня отображаются списки, не понял, в чём проблема(в строчку):
sun9-58.userapi.com/impg/VSPZK6fw40gJ5hoUHo-iENO6qWk0sm1du4rkkQ/eGTdL-W3_3c.jpg?size=1280x701&quality=96&sign=69291d262611180cb8844da261f95454&type=album
А как вывести одну из строк, выбранную пользователем и чтобы она была полностью возведена в квадрат?
подскажите пожалуйста пишу так
a = [
[3, 4, 5, 8],
[2, 6, 78, 14],
[10, 11, 12, 15]
]
for i in range(3):
for j in range(4):
print(a[i][j])
а при нажатии run выдает ошибку
File "C:/Users/Acer/PycharmProjects/untitled/рабочий 3.py", line 8
print(a[i][j])
^
IndentationError: expected an indented block
Process finished with exit code 1
блин понял. на принте отступ не сделал правильный
не успел, сам разобрался) молодец!)
Вложенные списки в народе матрицы