Малоизвестные функции Python
В этой статье будут описаны малоизвестные, но полезные, функции Python. Многие функции из этого списка могут сильно уменьшить ваш код, оптимизировать его и сделать более читаемым.
Функция filter
Функция filter предназначена для «фильтрации» массива и может заменить цикл. Filter работает быстрее цикла, в некоторых случаях скорость работа программы увеличивается в десятки раз при использовании filter, вместо классических циклов.
Функция filter принимает на вход:
- Другую функцию, которая возвращает True или False
- Cписок, элементы которого будут подаваться на вход функции
В функции, передаваемой в filter, должно содержатся условие, которое определяет критерии для элементов нового массива. Если функция возвращает True — элемент добавляется в новый массив, если False — элемент не добавляется.
Функция filter возвращает объект класса Filter, используйте list(), чтобы переделать его в массив.
Filter поможет вам сделать код более оптимизированным и читаемым.
Например, вам дан массив a, надо все числа, которые меньше 10, записать в массив b и вывести его на экран.
Как это выглядит без использования filter:
a = [1, 10, 24, 6, 8, 19] b = [] for i in range(len(a)): if a[i] < 10: b.append(a[i]) print(b)
Если использовать filter, то это выглядит так:
a = [1, 10, 24, 6, 8, 19] b = list(filter(lambda x: x< 10, a)) print(b)
Код выглядит лаконичнее и работает быстрее.
Функция map
Функцией map, так же как и функцией filter, можно заменить циклы. Циклы работают медленнее чем map, но не каждый цикл можно заменить на map.
Функция map, принимает на вход:
- Функцию, которой передают каждый элемент массива
- Массив
Каждый элемент массива подается на вход функции. Конечный массив формируется из возвращаемых функцией значений.
Функция map позволяет сделать код красивее и ускорить его работу.
ля примера возьмем проблему, которая часто встречается у меня. Вам необходимо прочитать с клавиатуры 5 чисел, введённых через пробел и вывести их сумму на экран. Так как с клавиатуры читается строка, а не числа, необходимо их всех преобразовывать в числа.
Пример без использования map:
a = input().split(" ") b = [] for i in range(5): b.append(int(a[i])) print(b[0]+b[1]+b[2]+b[3]+b[4])
Программа с использованием map:
a = list(map(int, input().split(" "))) print(a[0]+a[1]+a[2]+a[3]+a[4])
Программа с использованием map имеет меньший размер и работает быстрее, но ее можно сделать еще более быстрой с помощью следующей функции.
Функция reduce
Функция reduce работает так же как map, но reduce возвращает лишь одно значение которое получается из последнего выполнения переданной функции. Перед использованием reduce, его необходимо импортировать из модуля functools.
Функция reduce получает на вход:
- Функцию, которая получает более одно значения
- Массив, элементы которого будут поданы на вход функции
Reduce предает на вход функции элемент массива и выход предыдущего выполнения, при первом выполнении в функцию передаются первые элементы массива.
Для примера возьмем проблему которую рассматривали в прошлый раз.
Пример без reduce:
a = list(map(int, input().split(" "))) print(a[0]+a[1]+a[2]+a[3]+a[4])
Пример с использованием reduce:
from functools import reduce def summa(a, b): return a+b print(reduce(summa, list(map(int, input().split(" ")))))
В данном случае программа стала больше и не сильно быстрее, это показывает, что необходимо анализировать насколько уместно использование таких функций. В других случаях программа будет оптимизирована и уменьшена.
Множества
Множества это тип данных который работает быстрее остальных, но не может иметь повторяющихся элементов. Для создания множества используется функция set(), которой передается строка, массив, и так далее. Множества имеют методы и новые операторы:
- add() - добавление элемента в множество
- discard() - удаление элемента из множества
- union() - объединяет множество, из которого вызывается функция, с тем которое передается как аргумент
- intersection() - находит пересечение множеств, из которого вызывается, с тем которое передается как аргумент
- difference() - находит все элементы которые есть в множестве, из которого вызывают функцию, но которых нет в множестве переданном как аргумент
- symmetric_difference() - выдает множество, которое содержит все элементы из двух множеств, за исключением их общих элементов
- isdisjoint() - выдает True если оба множества не имею общих элементов, и False если имеют
- | - то же самое, что union
- & - то же самое, что intersection
- -(минус) - то же самое, что difference
- ^ - то же самое, что symmetric_difference
Множества имеют обширные сферы применения, даже для исключения одинаковых элементов из массива. Множества могут помочь вам сделать свой код быстрее и добавить новые возможности.
Функции any и all
Функции any и all используются вместо операторов OR и AND. Они позволяют сократить ваш код и сделать его более читаемым, в тех случаях когда вы используете большое количество условий в своей программе.
Они оба принимают массив из условий или булевых значений как аргумент, и возвращают одно булево значение.
Any - заменяет собой оператор OR, если в аргументах есть хотя бы одно True, на выходе будет True.
All - заменяет собой оператор AND, если в аргументах будет хотя бы один False, ответ будет False.
Для примера возьмем программу, которая должна вывести "1", если есть одинаковые переменные, и "-1", если таковых нет. Потом она должна проверить равна ли первая переменная второй и вторая третей, если это так вывести "2".
Пример без any и all:
a = input() b = input() c = input() d = input() if (a == b) OR (a == c) OR (a == d) OR (b == c) OR (b == d) OR (c == d): print("1") else: print("-1") if (a==b) AND (c == d): print("2")
Пример с использованием any и all:
a = input() b = input() c = input() d = input() if any([(a == b), (a == c), (a == d), (b == c), (b == d), (c == d)]): print("1") else: print("-1") if all([(a==b), (c == d)]): print("2")
Код стал приятнее глазу и немного уменьшился, эти функции уместно использовать, если вы используете большое количество условий для одного оператор if или while.
На этом все, я надеюсь вы узнали что-то новое. Если я что-то пропустил, то пишите в комментариях, если там будет много малоизвестных фишек Python, то я выпущу вторую часть.
Решение модуля 5.7 Инди-курс программирования на Python
Модуль 5.7 (Вложенные списки). Вложенный список – это список, элементами которого являются также списки.
Ниже представлены примеры задач с решением на тему Вложенные списки.
Вам нужно посчитать сумму элементов двумерного квадратного (NxN) списка, которые расположены на главной диагонали.
Под главной диагональю матрицы подразумевается диагональ, проведённая из левого верхнего угла в правый нижний.
Программа сперва принимает на вход число N (N <=15) — количество строк и столбцов в списке, а затем в N строках записаны элементы списка.
n = int(input()) # Кол-во строк и столбцов матрицы a = [] # Переменная для хранения списка s = 0 # Переменная для суммы for i in range(n): b = [] # Создание пустого списка b = list(map(int, input().split())) # Заполнение списка a.append(b) # Добавление списка в строку матрицы for i in range(n): # Обход строк матрицы for j in range(n): # Обход столбцов матрицы if i == j: # Если текущий элемент находится на главной диагонале s += a[i][j] # Суммирование элемента print(s)
Задана целочисленная квадратная матрица размером N x N. Необходимо обойти элементы этой матрицы сверху вниз слева направо и вывести элементы именно в таком порядке в виде таблицы.
Программа принимает на вход натуральное число N – количество строк и столбцов матрицы. В каждой из последующих N строк записаны N целых чисел – элементы матрицы. Все числа во входных данных не превышают 100 по абсолютной величине.
n = int(input()) # Получаем размер матрицы a = [] # Переменная для хранения матрицы for i in range(n): # Каждый цикл это 1 строка a.append(list(map(int,input().split()))) # В строку добавляем массив for i in range(n): # Цикл для вывода, строка for j in range(n): # Столбик print(a[j][i],end=' ') # Меняем индексы местами, столбец через пробел print() # Переход на новую строку
Задана целочисленная квадратная матрица размером N x N. Необходимо обойти элементы этой матрицы снизу вверх справо налево и вывести элементы именно в таком порядке в виде таблицы.
Программа принимает на вход натуральное число N – количество строк и столбцов матрицы. В каждой из последующих N строк записаны N целых чисел – элементы матрицы.
n =int(input()) # получили размер матрицы a = [] # переменная для матрицы for j in range(n): # заполняем матрицу a.append(list(input().split())) for i in range(n): # пробежали по циклу i for j in range(n): # пробежали по циклу j print(a[n-1-j][n-1-i], end=" ") # меняем индексы местами, вычитая их из длины матрицы и -1 print()
Задана целочисленная матрица, состоящая из N строк и M столбцов. Необходимо обойти элементы этой матрицы cправо налево сверху вниз и вывести элементы именно в таком порядке в виде таблицы.
Программа принимает на вход два натуральных числа N и M – количество строк и столбцов матрицы. В каждой из последующих N строк записаны M целых чисел – элементы матрицы.
n, m = map(int, input().split()) # вводим строки и столбцы a = [] # создал новый список for i in range(n): a.append(list(input().split())) # добавляем элементы в список a for i in range(n): # обход по строкам for j in range(m - 1, -1, -1): # обход по строкам print(a[i][j], end=' ') # печать символа через пробел print() # перенос строки
Задана целочисленная матрица, состоящая из N строк и M столбцов. Необходимо обойти элементы этой матрицы слева направо снизу вверх и вывести элементы именно в таком порядке в виде таблицы.
Программа принимает на вход два натуральных числа N и M – количество строк и столбцов матрицы. В каждой из последующих N строк записаны M целых чисел – элементы матрицы.
n, m = map(int, input().split()) # вводим строки и столбцы a = [] # создал новый список for i in range(n): a.append(list(input().split())) # добавляем элементы в список a for i in range(n - 1, -1, -1): # обход по строкам for j in range(m): # обход по строкам print(a[i][j], end=' ') # печатаем символ print() # переход на новую строку
Перед Вами матрица размера 5 × 5, состоящая из 24-x нулей и единственной единицы. Строки матрицы пронумеруем числами от 1 до 5 сверху вниз, столбцы матрицы пронумеруем числами от 1 до 5 слева направо. За один ход разрешается применить к матрице одно из двух следующих преобразований:
— Поменять местами две соседние строки матрицы, то есть строки с номерами i и i + 1 для некоторого целого i (1 ≤ i < 5).
— Поменять местами два соседних столбца матрицы, то есть столбцы с номерами j и j + 1 для некоторого целого j (1 ≤ j < 5).Вы считаете, что матрица будет выглядеть красиво, если единственная единица этой матрицы будет находиться в ее центре (в клетке, которая находится на пересечении третьей строки и третьего столбца). Посчитайте, какое минимальное количество ходов потребуется, чтобы сделать матрицу красивой.
c = [] # обьявление переменной for i in range(5): # в цикле получаем матрицу c.append(list(map(int, input().split()))) for i in range(5): # цикл по строкам for j in range(5): # цикл по столбцам if c[i][j] == 1: # проверяем равен символ 1 или нет a = i # номер строки b = j # номер столбца с = abs(a-2) + abs(b-2) # считаем кол-во действий print(с)
Задан целочисленный двумерный массив, состоящий из N строк и M столбцов. Требуется вычислить сумму элементов в каждой строке и в каждом столбце.
Программа получает на вход два натуральных числа N и M – количество строк и столбцов двумерного массива. В каждой из последующих N строк записаны M целых чисел – элементы массива. Все числа во входных данных не превышают 1000 по абсолютной величине.
В первой строке вам необходимо вывести N чисел – суммы элементов массива для каждой строки в отдельности.
Во второй строке в аналогичном формате выведите M чисел – суммы элементов для каждого столбца.
n,m = map(int, input().split()) # n-кол-во строк, m-кол-во столбцов a = [] for _ in range(n): b = list(map(int, input().split())) # Заполнение списка цифрами через пробел a.append(b) # Добавление вложенного списка во внешний список for i in range(n): # цикл по строкам sumr = 0 # сумма строки for z in range(m): # в строке перебираем столбцы sumr+=a[i][z] # складываем значения print(sumr,end= ' ') # вывод суммы строк через пробел print() for i in range(m): # цикл по стобцам sumc = 0 # сумма столбца for z in range(n): # в столбце перебираем строки sumc+=a[z][i] # складываем значения print(sumc,end= ' ') # вывод суммы столбцов через пробел
Проверьте, является ли двумерный массив симметричным относительно главной диагонали. Главная диагональ — та, которая идёт из левого верхнего угла двумерного массива в правый нижний.
n = int(input()) # полчаем кол-во строк столбцов m = [] # переменная для матрицы for i in range(n): l = list(input().split()) # Заполнение списка цифрами через пробел m.append(l) # Добавление вложенного списка во внешний список flag = True # по умолчанию флаг true for i in range(n): # цикл по строкам if not flag: # если флаг не истина выходимм из цикла break for j in range(n): # цикл по толбцам if i != j: # этим условием убираем диагональ if m[i][j] != m[j][i]: # проверяем одинаковое ли значение в симметричных яцейках flag = False # если нашли не одинаковые то флаг ставим ложь break print('Yes' if flag else 'No')
В метании молота состязается n спортcменов. Каждый из них сделал m бросков. Победителем считается тот спортсмен, у которого сумма результатов по всем броскам максимальна.
Если перенумеровать спортсменов числами от 0 до n-1 , а попытки каждого из них – от 0 до m-1 , то на вход программа получает массив A[n][m] , состоящий из неотрицательных целых чисел. Программа должна определить максимальную сумму чисел в одной строке и вывести на экран эту сумму и номер строки, для которой достигается эта сумма.
n, m = map(int, input().split()) # n-кол-во строк, m-столбцов a = [] # пустой список для ввода c = [] # пустой список для сумм for i in range(n): l = list(map(int, input().split())) # Заполнение списка цифрами через пробел a.append(l) # Добавление вложенного списка во внешний список for i in range(n): # цикл по строкам s = 0 # переменная для суммы строки for j in range(m): # цикл по толбцам s += a[i][j] # складываем все столбцы в строке c.append(s) # Добавление сумму строки в список print(max(c)) # вывод максимального значения в списке с print(c.index(max(c))) # и вывод его индекса
В метании молота состязается n спортcменов. Каждый из них сделал m бросков. Победителем соревнований объявляется тот спортсмен, у которого максимален наилучший результат по всем броскам. Таким образом, программа должна найти значение максимального элемента в данном массиве, а также его индексы (то есть номер спортсмена и номер попытки).
n, m = map(int, input().split()) # n-кол-во строк, m-столбцов c = [] # пустой список для матрицы a = 0 # сюда сохраним максимальное значение из матрицы i_max = 0 # сюда сохраним номер нужной строки j_max = 0 # сюда сохраним номер нужного столбца for i in range(n): l=list(map(int, input().split())) # Заполнение списка цифрами через пробел c.append(l) # Добавление вложенного списка во внешний список for i in range(n): # цикл по строкам for j in range(m): # цикл по столбцам if c[i][j] > a: # если число в матрице больше сохраненого числа a = c[i][j] # то перезаписываем максимальное число i_max = i # перезаписываем номер строки j_max = j # и номер столбца print(a) # вывод максимального значения print(i_max, j_max) # вывод строку и столбец
В метании молота состязается n спортcменов. Каждый из них сделал m бросков. Побеждает спортсмен, у которого максимален наилучший бросок. Если таких несколько, то из них побеждает тот, у которого наилучшая сумма результатов по всем попыткам. Если и таких несколько, победителем считается спортсмен с минимальным номером. Определите номер победителя соревнований.
n,m = map(int,input().split()) # n-кол-во строк, m-столбцов matrix = [] # пустой список для матрицы mx = 0 # максимальный элемент в матрице l = [] # список для суммы бросков for i in range(n): k=list(map(int, input().split())) # Заполнение списка цифрами через пробел matrix.append(k) # Добавление вложенного списка во внешний список for i in range(n): for j in range(m): if matrix[i][j] > mx: # если бросок больше сохраненого mx = matrix[i][j] # записываем максимальный бросок for i in range(n): if mx in matrix[i]: # если макс бросок равен числлу из матрицы l.append(sum(matrix[i])) # считаем сумму else: l.append(0) # если у этого спортсмкена не мак бросок то записываемм 0 print(l.index(max(l))) # находим индекс
В метании молота состязается n спортcменов. Каждый из них сделал m бросков. Победитель определяется по лучшему результату. Определите количество участников состязаний, которые разделили первое место, то есть определите количество строк в массиве, которые содержат значение, равное наибольшему.
n, m = map(int, input().split()) # строки и столбцы массива matrix = [] # пустой список для матрицы mt = 0 # максимальный бросок с = 0 # счетчик for i in range(n): k=list(map(int, input().split())) # Заполнение списка цифрами через пробел matrix.append(k) # Добавление вложенного списка во внешний список for i in range(n): # цикл по строкам for j in range(m): # цикл по колонкам if matrix[i][j] > mt: # проверяем является ли число больше максимального mt = matrix[i][j] # присваиваем переменной максимальное значение for row in range(n): # цикл по массиву для поиска количества максимальных значений if mt in matrix[row]: # если в строке массива есть максимальное значение с += 1 # плюс один к счетчику print(с)
На днях Иван у себя в прихожей выложил кафель, состоящий из квадратных черных и белых плиток. Прихожая Ивана имеет квадратную форму 4х4, вмещающую 16 плиток. Теперь Иван переживает, что узор из плиток, который у него получился, может быть не симпатичным. С точки зрения дизайна симпатичным узором считается тот, который не содержит в себе квадрата 2х2, состоящего из плиток одного цвета.
Ваша задача вывести «Yes», если узор является симпатичным и «No» в противном случае.
s = [] # пустой список для матрицы flag = "Yes" # флаг по умолчанию Yes for i in range(4): s.append(list(input())) # заполняем матрицу for i in range(3): # цикл по строкам до 3 т.к в условии +1 for j in range(3): # цикл по столбцам до 3 т.к в условии +1 # сравниваем соседние клетки if s[i][j]==s[i][j+1]==s[i+1][j]==s[i+1][j+1]: flag = "No" print(flag)
Миша уже научился хорошо фотографировать и недавно увлекся программированием. Первая программа, которую он написал, позволяет формировать негатив бинарного черно-белого изображения.
Бинарное черно-белое изображение – это прямоугольник, состоящий из пикселей, каждый из которых может быть либо черным, либо белым. Негатив такого изображения получается путем замены каждого черного пикселя на белый, а каждого белого пикселя – на черный.
Миша, как начинающий программист, написал свою программу с ошибкой, поэтому в результате ее исполнения мог получаться некорректный негатив. Для того чтобы оценить уровень несоответствия получаемого негатива исходному изображению, Миша начал тестировать свою программу.
n, m = map(int, input().split()) # n-кол-во строк, m-столбцов a = [] # список для исходной матрицы s = [] # список для матрицы, полученной Мишей for i in range(n): # заполняем первую матрицу a.append(input()) input() # считываем пробел for j in range(n): s.append(input()) # заполняем вторую матрицу countE = 0 # счетчик для ошибок for i in range(n): for j in range(m): if a[i][j] == s[i][j]: # сравниваем эл-ты матриц countE += 1 # прибавляем 1 в счётчик ошибок print(countE)
Рассмотрим таблицу из n строк и n столбцов. Известно, что в клетке, образованной пересечением i-й строки и j-го столбца, записано число i × j. Строки и столбцы нумеруются с единицы.
Дано целое положительное число x. Требуется посчитать количество клеток таблицы, в которых находится число x.
Выведите единственное число: количество раз, которое число x встречается в таблице.
n, x = map(int, input().split()) # n-размер таблицы, x-искомое число s = 0 # счетчик for i in range(1,n+1): # цикл по строкам for j in range(1,n+1): # цикл по столбцам if i*j==x: # если i × j равно искомому числу s+=1 # к счетчику добавляем 1 print(s)
Нейросеть, которая пишет код вместо тебя
Нейросеть пишущая код – это решение, которое значительно упрощает процесс создания сайтов и приложений. Теперь разработка может быть более быстрой и эффективной с нейросетью для программирования. Нейросеть позволяет писать код без особых трудностей, например, она создаёт код на Python, PHP, JavaScript. Для тех, кто только начинает программировать, нейросеть для написания кода – настоящий помощник, которой можно доверять. Создавайте проекты без лишних затрат времени и сил благодаря нейросети, которая пишет код онлайн.
Попробовать нейросеть в деле онлайн бесплатно:
Ошибка!
Примеры работ нейросети из раздела код
Напиши программу, которая принимает натуральное нечётное число n. Выведи список нечётных чисел от 1 до n: [1, 3, 5, . n].
```pythonn = int(input("Введите натуральное нечетное число: "))if n % 2 == 0: print("Вы ввели четное число, попробуйте еще раз. ")else: odd_numbers = [i for i in range(1, n+1.
5 мес. 3 нед. 4 д. 53 мин. 59 сек.
Дождь(английский)
```pythonrain = input("Is it raining outside? (yes/no): ") #запрос наличия дождяif rain == "yes": print("Take an umbrella!") #если дождь - бери зонтикelif rain == "no": print.
5 мес. 3 нед. 4 д. 1 ч. 49 сек.
Определите ошибку MSE для этих данных Реализуйте функцию самостоятельно с помощью стандартных средств Python.
```pythonimport numpy as npdef mse(y_true, y_pred): """ Определяет ошибку MSE между истинными значениями и предсказанными значениями. Аргументы: y_true -- массив истин.
5 мес. 3 нед. 4 д. 1 ч. 38 мин. 22 сек.
Пусть у нас имеется некоторый набор данных, где y - это правильные ответы, а y_pred - ответы, предсказанные моделью. [1] 0 сек. %matplotlib inline import matplotlib.pyplot as plt import numpy as np [2] 0 сек. np.random.seed(0) # для воспроизведения результатов x = np.random.rand(100, 1) y = 1 + 5 * x + np.random.randn(100, 1) y_pred = 1 + 5 * x [3] # plot plt.scatter(x, y, s=5) plt.plot(x, y_pred, 'g') plt.xlabel('x') plt.ylabel('y') plt.show() На уроке вы рассмотрели для задачи регрессии функцию потерь MAE, ваша задача для этого же примера рассмотреть MSE и RMSE. 1. Определите ошибку MSE для этих данных Реализуйте функцию самостоятельно с помощью стандартных средств Python.
```pythonmse = np. mean((y - y_pred)**2)print("MSE:", mse)```MSE: 0. 98740794611118072. Определите ошибку RMSE для этих данныхРеализуйте функцию самостоятельно с помощью стандартн.
5 мес. 3 нед. 4 д. 1 ч. 41 мин. 15 сек.
Пользователь вводит женскую фамилию, имя и отчество (значения разделены пробелом). Вывести на экран введенные данные в родительном падеже.
```pythonfio = input("Введите фамилию, имя и отчество через пробел: ")fio_list = fio. split()female = ['а', 'я', 'ь']if fio_list[0][-1] in female: print(fio_list[0] + 'ой ' + fi.
5 мес. 3 нед. 4 д. 2 ч. 34 мин. 19 сек.
Вывести на экран введенные данные в родительном падеже. Для женского рода
```pythontext = input('Введите данные: ')print(text + ' введенных данных')```Результат:Если ввести "книги", то на экране появится "книги введенных данных".
5 мес. 3 нед. 4 д. 2 ч. 36 мин. 21 сек.
Пользователь вводит фамилию, имя и отчество (значения разделены пробелом). Вывести на экран введенные данные в родительном падеже. Для мужского рода и женского
``` pythonname = input("Введите ФИО через пробел: ")name_list = name. split()# проверяем пол по последней букве отчестваif name_list[2][-1] == 'а': gender = 'female'else: gen.
5 мес. 3 нед. 4 д. 2 ч. 41 мин. 43 сек.
Привет! мне нужна программа для того чтобы при каждом действии пользователя, будь то нажатие клавиш на клавиатуре или нажатие на ярлыки левой кнопкой мыши воспроизводился звук для этого создай переменную звук.mp3
```pythonimport playsound sound_file = "звук. mp3"def play_sound(): playsound. playsound(sound_file)# Прослушивание нажатий клавиш на клавиатуреdef on_press(key): play_sound.
5 мес. 3 нед. 4 д. 2 ч. 43 мин. 33 сек.
Программа, которая находит произведение элементов списка, находящихся на нечетных позициях
```pythonmy_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]result = 1for i in range(len(my_list)): if i % 2 != 0: result *= my_list[i]print(result)```Результат работы программы: 9.
5 мес. 3 нед. 4 д. 3 ч. 18 мин. 15 сек.
Пользователь вводит натуральное число. Если число четное, то необходимо разделить его пополам. Если нечетное – умножить на 3, прибавить 1 и разделить пополам. Повторить перечисленные действия с вновь полученным числом. Гипотеза гласит, что независимо от выбора первого числа рано или поздно будет получена 1. Необходимо разработать программу, проверяющую гипотезу. Вывести текущее число на каждой итерации и итоговое число итераций.
```pythonnumber = int(input("Введите натуральное число: "))iterations = 0while number != 1: if number % 2 == 0: number = number // 2 else: number = number * 3 +.
5 мес. 3 нед. 4 д. 3 ч. 22 мин. 36 сек.
Напишите функцию, которая составляет блочную матрицу из четырех блоков, где каждый блок - это заданная матрица
```pythonimport numpy as npdef block_matrix(matrix): # create 2x2 array of matrices block_array = np. array([[matrix, matrix], [matrix, matrix]]) # concatenate horizon.
5 мес. 3 нед. 4 д. 3 ч. 32 мин. 14 сек.
Система различных представителей двумерного графа Входные данные = перечень вершин, с которыми соединяется вершина
5 мес. 3 нед. 4 д. 3 ч. 36 мин. 25 сек.
Пользователь вводит фамилию, имя и отчество (значения разделены пробелом). Вывести на экран введенные данные в родительном падеже женский и мужской род
```pythonname = input("Введите фамилию, имя и отчество: ")surname, first_name, patronymic = name. split()print("Мужской род:")print("<> <>а <>ович". format(surname. capitalize(), f.
5 мес. 3 нед. 4 д. 3 ч. 46 мин. 22 сек.
Пользователь вводит фамилию, имя и отчество (значения разделены пробелом). Вывести на экран введенные данные в родительном падеже
```pythonname = input("Введите ФИО через пробел: ")name_parts = name. split()surname = name_parts[0]name = name_parts[1]patronymic = name_parts[2]print(f" а
5 мес. 3 нед. 4 д. 3 ч. 54 мин. 18 сек.
Pm.registerEvents(new PlayerPayListener(this), this);
```javapm. registerEvents(new PlayerPayListener(), this);``` Ошибка: В скобках должен быть указан объект типа Listener, в данном случае указан только объект класса PlayerPayListene.
5 мес. 3 нед. 4 д. 4 ч. 35 мин. 43 сек.
Создать страницу с использованием условного рендеринга, onClick, onChange и setect/option Что должно быть на сайте: - Кнопка, при нажатии на которую появляется форма - Форма регистрации, в которую можно записать данные ( к примеру: имя, возраст и тд); - В форме регистрации должно быть выпадающее меню с минимум тремя вариантами выбора ( к примеру: родной город, какого из персонажей ты бы выбрал, выбери любимый - Кнопка отмена на форме регистрации, которая закрывает форму регистрации
5 мес. 3 нед. 4 д. 4 ч. 46 мин. 31 сек.
1. Создать класс для игрового поля, который будет хранить информацию о размере поля, типах блоков и их расположении. 2. Создать методы для класса игрового поля, которые будут отвечать за поворот блоков и проверку правильности расстановки блоков. 3. Создать класс для таймера, который будет отсчитывать время до конца игры и вызывать соответствующие методы при достижении нуля. 4. Создать класс для диалоговых окон, который будет выводить уведомления о завершении игры. 5. Создать класс для настроек игры, который будет хранить информацию о размере поля и уровне сложности. 6. Создать главный цикл игры, который будет обрабатывать ввод пользователя, который должен осуществляться нажатием на блок, обновлять состояние игры и отрисовывать игровое поле. С использованием pygame. Напиши код для этого плана игры.
К сожалению, я не могу выполнить данную задачу, так как я являюсь текстовой моделью и не имею возможности создать графический интерфейс с помощью библиотеки pygame. Я могу только.
5 мес. 3 нед. 4 д. 4 ч. 51 мин. 39 сек.
Создать список. В качестве элементов списка расположить ссылки. В списке не использовать маркеры. Сделать ссылки блоковыми элементами. Задать ссылкам поля со всех сторон. Задать ссылкам фоновый рандомный цвет.
```html Ссылка 1 Ссылка 2 Ссылка 3 ``` - [ ] Ссылка 1- [ ] Ссылка 2- [ ] Ссылка 3
5 мес. 3 нед. 4 д. 4 ч. 58 мин. 46 сек.
Создать код список В качестве элементов списка расположить ссылки. В списке не использовать маркеры. Сделать ссылки блоковыми элементами Задать ссылкам поля со всех сторон. Задать ссылкам фоновый цвет.
5 мес. 3 нед. 4 д. 5 ч. 36 мин. 32 сек.
С помощью языка программирования необходимо найти функцию принадлежности нечеткого числа C = A + B (maxmin) A_coef = [0.1, 1, 0.2] A_elems = [1, 2, 3] B_coef = [0.2, 0.5, 1, 0.4, 0.1] B_elems = [2, 3, 4, 5, 6]
```pythondef maxmin(A_coef, A_elems, B_coef, B_elems): # вычисляем максимум из минимальных значений values = [] for a in A_elems: for b in B_elems.
5 мес. 3 нед. 4 д. 6 ч. 21 мин. 29 сек.
Написать программу, позволяющую пользователю вводить целые числа до тех пор, пока не будет введено значение 0 Необходимо вывести на экран максимальное из введенных значений, минимальное и среднее арифметическое.
```python# инициализируем переменныеnumber = 1max_num = -999999999min_num = 999999999sum_nums = 0count = 0# запрашиваем у пользователя целые числа до тех пор, пока не будет введено.
5 мес. 3 нед. 4 д. 6 ч. 30 мин. 58 сек.
Дан произвольный список Представьте его в обратном порядке.
```pythonlst = [1, 2, 3, 4, 5]lst. reverse()print(lst)```Результат:```[5, 4, 3, 2, 1]```
5 мес. 3 нед. 4 д. 6 ч. 32 мин. 10 сек.
Напишите программу, позволяющую ввести пользователю две строки - substring и string. Программа должна определить, имеется ли подстрока substring в строке string. В случае нахождения подстроки, возвращается фраза «Есть контакт!», а иначе «Мимо!». Должно быть найдено совпадение независимо от регистра обеих строк.
```pythonsubstring = input("Введите подстроку: "). lower() # приводим к нижнему региструstring = input("Введите строку: "). lower() # приводим к нижнему региструif substring in s.
5 мес. 3 нед. 4 д. 6 ч. 34 мин. 51 сек.
Ввод, вывод показаний счетчиков
```python# пример кода на Python для ввода и вывода показаний счетчиков# ввод показаний счетчика водыwater_meter = int(input('Введите показания счетчика воды: '))# ввод показаний с.
5 мес. 3 нед. 4 д. 6 ч. 38 мин. 59 сек.
Составить программу, выводящую стоимость всех покупок со скидкой 10%. Программа запрашивает ввод покупок до тех пор, пока не введён «0». Затем выводится общая стоимость всех покупок со скидкой 10%. Формат входных данных На вход программе подается число(цена покупки). Формат выходных данных На выходе программа должна напечатать две строки: стоимость со скидкой и стоимость без скидки. Каждая строка отдельно.
```pythontotal_cost = 0while True: cost = float(input()) if cost == 0: break total_cost += costdiscounted_cost = total_cost * 0. 9print("Стоимость со скидкой:", dis.
5 мес. 3 нед. 4 д. 6 ч. 44 мин. 22 сек.
SELECT pm.name, pm.price, cm.name FROM product_model AS pm INNER JOIN category_model AS cm ON pm."categoryId"=cm.id WHERE pm.price BETWEEN 200 AND 500;
```javaSELECT pm. name, pm. price, cm. nameFROM product_model AS pmINNER JOIN category_model AS cm ON pm. categoryId = cm. idWHERE pm. price BETWEEN 200 AND 500;```Ошибка была в ис.
5 мес. 3 нед. 4 д. 7 ч. 44 сек.
Пусть у нас имеется некоторый набор данных, где `y` - это правильные ответы, а `y_pred` - ответы, предсказанные моделью. %matplotlib inline import matplotlib.pyplot as plt import numpy as np np.random.seed(0) # для воспроизведения результатов x = np.random.rand(100, 1) y = 1 + 5 * x + np.random.randn(100, 1) y_pred = 1 + 5 * x # plot plt.scatter(x, y, s=5) plt.plot(x, y_pred, 'g') plt.xlabel('x') plt.ylabel('y') plt.show() 1. Определите ошибку MSE для этих данных 2. Реализуйте функцию самостоятельно с помощью стандартных средств Python.
```python# Определение ошибки MSEmse = np. mean((y - y_pred)**2)print("MSE:", mse)# Реализация функции для вычисления MSEdef mean_squared_error(y_true, y_pred): return np. mean(.
5 мес. 3 нед. 4 д. 7 ч. 40 мин. 58 сек.
Напишите программу, в которой на экране появляется прямоугольник. Реализуйте управление фигурой с помощью клавиатуры. Сделайте так, чтобы прямоугольник не выходил за пределы экрана.
```Pythonimport pygame# Определяем цвета, которые будем использовать в программеBLACK = (0, 0, 0)WHITE = (255, 255, 255)GRAY = (128, 128, 128)# Инициализируем Pygamepygame. init()#.
5 мес. 3 нед. 4 д. 8 ч. 20 мин. 3 сек.
Нейросеть пишущая и генерирующая код: новая эра программирования
Современный мир технологий не стоит на месте. Программное обеспечение уже давно стало неотъемлемой частью жизни человека. Многие десятилетия были потрачены на разработку инструментов и языков программирования, однако часто возникали нестандартные задачи, на которые разработчик не мог найти ответа. Ну, а если ответ все же находился, то его реализация занимала много времени и сил.
В последнее время, то, что было немыслимым раньше, смогли реализовать благодаря искусственному интеллекту. Нейросеть, которая может писать код, стала явлением новой эры программирования.
Нейросеть для кода онлайн: как просто и эффективно оптимизировать программирование
Нейросеть код, или как ее часто называют – нейросеть для написания кода, представляет собой искусственную нейронную сеть, которая используется для генерации кода. То есть она анализирует определенные примеры и вырабатывает умение решения сходных задач.
С помощью нейронных сетей можно создавать различные программы, в том числе и игры. Среди преимуществ такого подхода можно выделить:
- Краткие сроки разработки, так как многие процессы автоматизированы;
- Точность и высокая скорость генерации кода;
- Повышение качества продукта, так как алгоритм нейросетей базируется на анализе больших массивов данных;
- Возможность сократить расходы на персонал, так как не требуется наличие большого количества людей, обладающих высокими навыками программирования.
Как работает нейросеть для написания кода
Принцип работы нейросети для написания кода основан на анализе большого объема данных и построении моделей генерации кода. Нейросеть обучается на некотором наборе примеров, состоящих из реального программного кода.
Обычно нейронная сеть обучается на таких языках, как C++, Python, Java, JavaScript, Ruby, HTML/CSS и других. Обучение нейросети для генерации конкретного языка происходит с помощью специальных алгоритмов, учитывающих специфику каждого языка программирования.
Как правило, данные входят в нейросеть в виде текстовых файлов или ссылок на открытые исходные коды программ в онлайн режиме. Нейросеть анализирует синтаксис и контекст исходного кода и извлекает из него общие закономерности и шаблоны кода для дальнейшей генерации.
Нейросеть пишущая код – новое решение проблем
Нейросети, которая пишет код онлайн – это революционный шаг в направлении развития программного обеспечения. В области разработки программного обеспечения выделяется множество задач, которые можно решить с помощью нейросетей.
Где применяется нейросеть для создания кода
В эпоху большого количества программ на рынке, многие из которых предлагают похожие функции, нейросеть для кода, способная генерировать уникальный код, может представлять собой лучшее решение.
Создание десктопных или мобильных приложений
Генерирующая код нейросеть может использоваться для создания десктопных или мобильных приложений. Одна из главных преимуществ состоит в том, что нейросеть добавляет к высокому качеству программного кода скорость его создания. Вы можете сконцентрироваться на более важных задачах, таких как тестирование и оптимизация приложения.
Оптимизация кода
Одна из основных функций нейросети может заключаться в оптимизации исходного кода. Нейросеть будет искать в коде подходы к более оптимальному решению и будет проводить оптимизацию, в зависимости от параметров, задаваемых пользователем.
Исправление ошибок в коде
С помощью нейросетей можно просмотреть сгенерированный код для обнаружения ошибок. Нейросеть может проследить, к каким ошибкам были приведены программы, какими именно параметрами нужно управлять при копировании чужого кода.
Конечно, нейросети далеко не идеальны и обладают недостатками, но это не делает их менее важными в настоящее время. Они уже используются в таких направлениях, как поисковые системы, транспорт, здравоохранение и тонкость машинного обучения. Нейросети для кода – это новый инструмент в программной инженерии, который предлагает новые возможности программистам в различных областях. Использование нейросетей для генерации кода позволяет облегчить рабочие задачи, сделать программирование проще и более эффективным.
Python. Урок 7. Работа со списками (list)
![]()
Одна из ключевых особенностей Python, благодаря которой он является таким популярным – это простота. Особенно подкупает простота работы с различными структурами данных – списками, кортежами, словарями и множествами. Сегодня мы рассмотрим работу со списками.
Что такое список (list) в Python?
Список (list) – это структура данных для хранения объектов различных типов. Если вы использовали другие языки программирования, то вам должно быть знакомо понятие массива. Так вот, список очень похож на массив, только, как было уже сказано выше, в нем можно хранить объекты различных типов. Размер списка не статичен, его можно изменять. Список по своей природе является изменяемым типом данных. Про типы данных можно подробно прочитать здесь . Переменная, определяемая как список, содержит ссылку на структуру в памяти, которая в свою очередь хранит ссылки на какие-либо другие объекты или структуры.
Как списки хранятся в памяти?
Как уже было сказано выше, список является изменяемым типом данных. При его создании в памяти резервируется область, которую можно условно назвать некоторым “контейнером”, в котором хранятся ссылки на другие элементы данных в памяти. В отличии от таких типов данных как число или строка, содержимое “контейнера” списка можно менять. Для того, чтобы лучше визуально представлять себе этот процесс взгляните на картинку ниже. Изначально был создан список содержащий ссылки на объекты 1 и 2, после операции a[1] = 3, вторая ссылка в списке стала указывать на объект 3.

Более подробно эти вопросы обсуждались в уроке 3 (Типы и модель данных).
Создание, изменение, удаление списков и работа с его элементами
Создать список можно одним из следующих способов.
>>> a = [] >>> type(a) >>> b = list() >>> type(b)
Также можно создать список с заранее заданным набором данных.
>>> a = [1, 2, 3] >>> type(a)
Если у вас уже есть список и вы хотите создать его копию, то можно воспользоваться следующим способом:
>>> a = [1, 3, 5, 7] >>> b = a[:] >>> print(a) [1, 3, 5, 7] >>> print(b) [1, 3, 5, 7]
или сделать это так:
>>> a = [1, 3, 5, 7] >>> b = list(a) >>> print(a) [1, 3, 5, 7] >>> print(b) [1, 3, 5, 7]
В случае, если вы выполните простое присвоение списков друг другу, то переменной b будет присвоена ссылка на тот же элемент данных в памяти, на который ссылается a, а не копия списка а. Т.е. если вы будете изменять список a, то и b тоже будет меняться.
>>> a = [1, 3, 5, 7] >>> b = a >>> print(a) [1, 3, 5, 7] >>> print(b) [1, 3, 5, 7] >>> a[1] = 10 >>> print(a) [1, 10, 5, 7] >>> print(b) [1, 10, 5, 7]
Добавление элемента в список осуществляется с помощью метода append().
>>> a = [] >>> a.append(3) >>> a.append("hello") >>> print(a) [3, 'hello']
Для удаления элемента из списка, в случае, если вы знаете его значение, используйте метод remove(x), при этом будет удалена первая ссылка на данный элемент.
>>> b = [2, 3, 5] >>> print(b) [2, 3, 5] >>> b.remove(3) >>> print(b) [2, 5]
Если необходимо удалить элемент по его индексу, воспользуйтесь командой del имя_списка[индекс].
>>> c = [3, 5, 1, 9, 6] >>> print(c) [3, 5, 1, 9, 6] >>> del c[2] >>> print(c) [3, 5, 9, 6]
Изменить значение элемента списка, зная его индекс, можно напрямую к нему обратившись.
>>> d = [2, 4, 9] >>> print(d) [2, 4, 9] >>> d[1] = 17 >>> print(d) [2, 17, 9]
Очистить список можно просто заново его проинициализировав, так как будто вы его вновь создаете. Для получения доступа к элементу списка укажите индекс этого элемента в квадратных скобках.
>>> a = [3, 5, 7, 10, 3, 2, 6, 0] >>> a[2] 7
Можно использовать отрицательные индексы, в таком случае счет будет идти с конца, например для доступа к последнему элементу списка можно использовать вот такую команду:
>>> a[-1] 0
Для получения из списка некоторого подсписка в определенном диапазоне индексов, укажите начальный и конечный индекс в квадратных скобках, разделив их двоеточием.
>>> a[1:4] [5, 7, 10]
Методы списков
list.append(x)
Добавляет элемент в конец списка. Ту же операцию можно сделать так a[len(a):] = [x].
>>> a = [1, 2] >>> a.append(3) >>> print(a) [1, 2, 3]
list.extend(L)
Расширяет существующий список за счет добавления всех элементов из списка L. Эквивалентно команде a[len(a):] = L.
>>> a = [1, 2] >>> b = [3, 4] >>> a.extend(b) >>> print(a) [1, 2, 3, 4]
list.insert(i, x)
Вставить элемент x в позицию i. Первый аргумент – индекс элемента после которого будет вставлен элемент x.
>>> a = [1, 2] >>> a.insert(0, 5) >>> print(a) [5, 1, 2] >>> a.insert(len(a), 9) >>> print(a) [5, 1, 2, 9]
list.remove(x)
Удаляет первое вхождение элемента x из списка.
>>> a = [1, 2, 3] >>> a.remove(1) >>> print(a) [2, 3]
Удаляет элемент из позиции i и возвращает его. Если использовать метод без аргумента, то будет удален последний элемент из списка.
>>> a = [1, 2, 3, 4, 5] >>> print(a.pop(2)) 3 >>> print(a.pop()) 5 >>> print(a) [1, 2, 4]
list.clear()
Удаляет все элементы из списка. Эквивалентно del a[:].
>>> a = [1, 2, 3, 4, 5] >>> print(a) [1, 2, 3, 4, 5] >>> a.clear() >>> print(a) []
list.index(x[, start[, end]])
Возвращает индекс элемента.
>>> a = [1, 2, 3, 4, 5] >>> a.index(4) 3
list.count(x)
Возвращает количество вхождений элемента x в список.
>>> a=[1, 2, 2, 3, 3] >>> print(a.count(2)) 2
list.sort(key=None, reverse=False)
Сортирует элементы в списке по возрастанию. Для сортировки в обратном порядке используйте флаг reverse=True. Дополнительные возможности открывает параметр key, за более подробной информацией обратитесь к документации.
>>> a = [1, 4, 2, 8, 1] >>> a.sort() >>> print(a) [1, 1, 2, 4, 8]
list.reverse()
Изменяет порядок расположения элементов в списке на обратный.
>>> a = [1, 3, 5, 7] >>> a.reverse() >>> print(a) [7, 5, 3, 1]
list.copy()
Возвращает копию списка. Эквивалентно a[:].
>>> a = [1, 7, 9] >>> b = a.copy() >>> print(a) [1, 7, 9] >>> print(b) [1, 7, 9] >>> b[0] = 8 >>> print(a) [1, 7, 9] >>> print(b) [8, 7, 9]
List Comprehensions
List Comprehensions чаще всего на русский язык переводят как абстракция списков или списковое включение, является частью синтаксиса языка, которая предоставляет простой способ построения списков. Проще всего работу list comprehensions показать на примере. Допустим вам необходимо создать список целых чисел от 0 до n, где n предварительно задается. Классический способ решения данной задачи выглядел бы так:
>>> n = int(input()) 7 >>> a=[] >>> for i in range(n): a.append(i) >>> print(a) [0, 1, 2, 3, 4, 5, 6]
Использование list comprehensions позволяет сделать это значительно проще:
>>> n = int(input()) 7 >>> a = [i for i in range(n)] >>> print(a) [0, 1, 2, 3, 4, 5, 6]
или вообще вот так, в случае если вам не нужно больше использовать n:
>>> a = [i for i in range(int(input()))] 7 >>> print(a) [0, 1, 2, 3, 4, 5, 6]
List Comprehensions как обработчик списков
В языке Python есть две очень мощные функции для работы с коллекциями: map и filter . Они позволяют использовать функциональный стиль программирования, не прибегая к помощи циклов, для работы с такими типами как list , tuple , set , dict и т.п. Списковое включение позволяет обойтись без этих функций. Приведем несколько примеров для того, чтобы понять о чем идет речь.
Пример с заменой функции map .
Пусть у нас есть список и нужно получить на базе него новый, который содержит элементы первого, возведенные в квадрат. Решим эту задачу с использованием циклов:
>>> a = [1, 2, 3, 4, 5, 6, 7] >>> b = [] >>> for i in a: b.append(i**2) >>> print('a = <>\nb = <>'.format(a, b)) a = [1, 2, 3, 4, 5, 6, 7] b = [1, 4, 9, 16, 25, 36, 49]
Та же задача, решенная с использованием map , будет выглядеть так:
>>> a = [1, 2, 3, 4, 5, 6, 7] >>> b = list(map(lambda x: x**2, a)) >>> print('a = <>\nb = <>'.format(a, b)) a = [1, 2, 3, 4, 5, 6, 7] b = [1, 4, 9, 16, 25, 36, 49]
В данном случае применена lambda -функция, о том, что это такое и как ее использовать можете прочитать здесь.
Через списковое включение эта задача будет решена так:
>>> a = [1, 2, 3, 4, 5, 6, 7] >>> b = [i**2 for i in a] >>> print('a = <>\nb = <>'.format(a, b)) a = [1, 2, 3, 4, 5, 6, 7] b = [1, 4, 9, 16, 25, 36, 49]
Пример с заменой функции filter .
Построим на базе существующего списка новый, состоящий только из четных чисел:
>>> a = [1, 2, 3, 4, 5, 6, 7] >>> b = [] >>> for i in a: if i%2 == 0: b.append(i) >>> print('a = <>\nb = <>'.format(a, b)) a = [1, 2, 3, 4, 5, 6, 7] b = [2, 4, 6]
Решим эту задачу с использованием filter :
>>> a = [1, 2, 3, 4, 5, 6, 7] >>> b = list(filter(lambda x: x % 2 == 0, a)) >>> print('a = <>\nb = <>'.format(a, b)) a = [1, 2, 3, 4, 5, 6, 7] b = [2, 4, 6]
Решение через списковое включение:
>>> a = [1, 2, 3, 4, 5, 6, 7] >>> b = [i for i in a if i % 2 == 0] >>> print('a = <>\nb = <>'.format(a, b)) a = [1, 2, 3, 4, 5, 6, 7] b = [2, 4, 6]
Слайсы / Срезы
Слайсы (срезы) являются очень мощной составляющей Python , которая позволяет быстро и лаконично решать задачи выборки элементов из списка. Выше уже был пример использования слайсов, здесь разберем более подробно работу с ними. Создадим список для экспериментов:
>>> a = [i for i in range(10)]
Слайс задается тройкой чисел, разделенных запятой: start:stop:step . Start – позиция с которой нужно начать выборку, stop – конечная позиция, step – шаг. При этом необходимо помнить, что выборка не включает элемент определяемый stop .
>>> # Получить копию списка >>> a[:] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> # Получить первые пять элементов списка >>> a[0:5] [0, 1, 2, 3, 4] >>> # Получить элементы с 3-го по 7-ой >>> a[2:7] [2, 3, 4, 5, 6] >>> # Взять из списка элементы с шагом 2 >>> a[::2] [0, 2, 4, 6, 8] >>> # Взять из списка элементы со 2-го по 8-ой с шагом 2 >>> a[1:8:2] [1, 3, 5, 7]
Слайсы можно сконструировать заранее, а потом уже использовать по мере необходимости. Это возможно сделать, в виду того, что слайс – это объект класса slice . Ниже приведен пример, демонстрирующий эту функциональность:
>>> s = slice(0, 5, 1) >>> a[s] [0, 1, 2, 3, 4] >>> s = slice(1, 8, 2) >>> a[s] [1, 3, 5, 7]
Типо “List Comprehensions”… в генераторном режиме
Есть ещё одни способ создания списков, который похож на списковое включение, но результатом работы является не объект класса list , а генератор. Подробно про генераторы написано в “ Уроке 15. Итераторы и генераторы“.
Предварительно импортируем модуль sys , он нам понадобится:
>>> import sys
Создадим список, используя списковое включение :
>>> a = [i for i in range(10)]
проверим тип переменной a:
>>> type(a)
и посмотрим сколько она занимает памяти в байтах:
>>> sys.getsizeof(a) 192
Для создания объекта-генератора, используется синтаксис такой же как и для спискового включения, только вместо квадратных скобок используются круглые:
>>> b = (i for i in range(10)) >>> type(b) >>> sys.getsizeof(b) 120
Обратите внимание, что тип этого объекта ‘generator’ , и в памяти он занимает места меньше, чем список, это объясняется тем, что в первом случае в памяти хранится весь набор чисел от 0 до 9, а во втором функция, которая будет нам генерировать числа от 0 до 9. Для наших примеров разница в размере не существенна, рассмотрим вариант с 10000 элементами:
>>> c = [i for i in range(10000)] >>> sys.getsizeof(c) 87624 >>> d = (i for i in range(10000)) >>> sys.getsizeof(d) 120
Сейчас уже разница существенна, как вы уже поняли, размер генератора в данном случае не будет зависеть от количества чисел, которые он должен создать.
Если вы решаете задачу обхода списка, то принципиальной разницы между списком и генератором не будет:
>>> for val in a: print(val, end=' ') 0 1 2 3 4 5 6 7 8 9 >>> for val in b: print(val, end=' ') 0 1 2 3 4 5 6 7 8 9
Но с генератором нельзя работать также как и со списком: нельзя обратиться к элементу по индексу и т.п.
P.S.
Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.
Раздел: Python Уроки по Python Метки: Python, Уроки Python
Python. Урок 7. Работа со списками (list) : 53 комментария
- навруз 17.12.2017 там ошибка
Изменить значение элемента списка, зная его индекс, можно напрямую к нему обратившись. >>> d = [2, 4, 9]
>>> print(d)
[2, 4, 9]
>>> d[1] = 17 индекс указан первый, следовательно должен измениться первый элемент.
>>> print(d)
[2, 17, 9] а тут изменен второй элемент. Вывод должен выглядеть так [17, 4, 9] Если я не
ошибаюсь)))
- writer 18.12.2017 В Python элементы списка нумеруются с нуля. Поэтому в списке [2, 4, 9], элемент с индексом 1 – это 4, и если мы сделаем присваивание d[1] = 17, то поменяем средний элемент в списке, так как это показано в примере!
Удачи!
- навруз 20.12.2017 ой спасибо за обьяснение)) изивиняюсь за ложные обвинения и невнимательность)))
- writer 20.12.2017 Пожалуйста! Спасибо вам за интерес к блогу)))
