Python
  • Полезные ссылки
  • Базовый Python
    • Простые
      • Циклы. Варианты циклов, назначение.
      • Что такое список, примеры, назначение.
      • Что такое словарь, примеры, назначение.
      • Что такое срез, примеры, назначение.
      • Что такое функция. Для чего нужны функции. Параметры функций.
      • Что такое класс. Для чего нужны классы.
      • В чем разница между функцией и классом (рассматривая одну функцию).
      • Как объединить несколько строк.
      • Рекурсия.
      • Что такое json. Для чего используют json.
    • Сложные
      • Генераторы, примеры, назначение.
      • Итераторы. Зачем нужны
      • Что такое кортеж, примеры, назначение
      • Что такое set, примеры, назначение
      • Наследование, примеры, назначение
      • Полиморфизм, примеры, назначение
      • Преимущества итераторов перед генераторами
      • Способы создания итераторов
      • Изменяемые и неизменяемые типы
      • Что такое исключения, примеры, назначение
  • Алгоритмы и структуры данных
    • Общее понятие массива. Представление массива. Примеры.
    • Понятие очереди, принципы работы, примеры использование, временные сложности операций.
    • Понятие стека, принципы работы, примеры использование, временные сложности операций
    • Как осуществляется операция доступа к элементу массива. Временная сложность операции
    • Понятие временной сложности алгоритмов. Назначение, примеры, графическое представление
    • Линейный поиск в массиве. Временная сложность
    • Поиск минимального элемента в массиве. Временная сложность
    • Линейный поиск в двумерном массиве. Временная сложность
    • Алгоритм бинарного поиска. Временная сложность
    • Поиск подстроки. Линейный алгоритм. Временная сложность
  • Практика
    • Простые
    • Сложнее
Powered by GitBook
On this page
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

Was this helpful?

  1. Практика

Сложнее

16

Есть строка. Нужно получить новую строку, в которой после каждого слова, заканчивающегося на g, стоит знак «@».

def replacement(s):
    return s.replace("g ", "g@ ")

17

Есть список чисел, нужно отобрать в новый список числа без повторов.

def no_duplicates(arr):
    return list(set(arr))

18

Отобрать из списка только уникальные элементы.

def unique_elements(arr):
    status = {}
    for n in arr:
        if n in status.keys():
            status[n] += 1
        else:
            status[n] = 1
    return [n for n in status if status[n] == 1]


x = [1, 2, 2, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 10, 10]
print(unique_elements(x))

19

Отобрать из списка неуникальные элементы.

def non_unique_elements(arr):
    status = {}
    for n in arr:
        if n in status.keys():
            status[n] += 1
        else:
            status[n] = 1
    return [n for n in status if status[n] > 1]


x = [1, 2, 2, 2, 3, 3, 4, 4, 4, 4, 4, 5, 6, 7, 8, 9, 10, 10]
print(non_unique_elements(x))

20

Из массива (списка), содержащего 100 элементов выбрать 20 элементов в случайных неповторяющихся позициях. Переместить выбранные элементы в начало массива, обменяв их местами с имеющимися там.

21

Отсортировать массив из 100 элементов по убыванию. Посчитать сумму всех нечетных элементов. Вычесть из каждого 3-го элемента данную сумму.

def happy_sorting(arr):
    sum_all = sum([n for n in arr if n % 2 == 1])
    for i in range(len(arr)):
        if i % 3 == 0:
            arr[i] -= sum_all
    return arr


x = [x for x in range(100)]
x = sorted(x)[::-1]
print(happy_sorting(x))

22

В двумерном массиве найти строку массива, сумма элементов которой минимальна. Вычесть элементы данной строки из соответствующих элементов всех строк массива.

23

Сгенерировать массив из 10 неповторяющихся элементов. Создать и двумерный массив 10*10 и скопировать элементы сгенерированного массива в каждую строку двумерного массива.

from random import sample

x = sample(range(100), 10)
matrix = [[None for j in range(10)] for i in range(10)]
for i in range(10):
    for j in range(10):
        matrix[i][j] = x[j]
print(matrix)

24

Для массива 100 случайных чисел рассчитать среднеквадратическое отклонение. Вычесть из каждого элемента массива данное значение отклонения. Из результирующего массива выбрать 3 наибольших значения.

from random import randint
from math import sqrt

# Шаг 1
# Нужно создать массив из 100 случайных чисел
data = [randint(0,100) for i in range(100)]
print("data :", data, "\n")

# Шаг 2
# Нужно вычислить среднее арифметическое элементов массива
middle = sum(data) / 100
print("middle :", middle, "\n")

# Шаг 3
# Нужно вычислить среднее квадратичное отклонение
deviation = sqrt( sum( [ (x - middle)**2 for x in data ] ) / 100 )
deviation = round(deviation, 2) # округлим до 2-х знаков после запятой
print("deviation :", deviation, "\n")

# Шаг 4
# Из каждого элемента массива нужно вычесть среднее квадратичное отклонение
data = [round(x-deviation, 2) for x in data]
    # каждую полученную разность округлим до 2-х знаков после запятой
print("subtraction deviation :", data, "\n")

# Шаг 5
# В исходном массиве некоторые числа могут повторяться (потому что они случайные)
# Следовательно, в массиве, полученном после шага 4 также возможн повторения
# Так что из полученного списка необходимо исключить повторы
data = list(set(data))
print("without duplicates :", data, "\n")

# Шаг 6
# В полученном массиве нужно найти 3 наибольших значения
# Для этого нужно 3 раза подряд находить максимум и заносить его в отдельный массив
# После этого необходимо каждый раз удалять найденный максимум из массива, в котором он был найден
maximums = []
for i in range(3):
    max_number = max(data)
    maximums.append(max_number)
    data.remove(max_number)
print("maximums :", maximums)

25

Создать два упорядоченных по возрастанию массива. Слить два массива в один также отсортированный по возрастанию.

from random import randint

a = sorted([randint(1, 100) for i in range(10)])
print(a)

b = sorted([randint(1, 100) for j in range(5)])
print(b)

c = sorted(a+b)
print(c)

26

Сгенерировать два случайных массива размера 20 с неповторяющимися элементами в диапазоне от 0 до 100. Посчитать количество совпадений между элементами массивов.

from random import sample

a = sample(range(0, 100), 20)
print(a)

b = sample(range(0, 100), 20)
print(b)

counter = sum([1 for x in a if x in b])
print(counter)

27

Сгенерировать два случайных двумерных массива одинакового размера. Перемножить элементы в соответствующих позициях и результат записать в третий

from random import randint

row = int(input("Enter number of strings: "))
col = int(input("Enter number of columns: "))

a = [[randint(1, 100) for j in range(col)] for i in range(row)]
print(a)

b = [[randint(1, 100) for j in range(col)] for i in range(row)]
print(b)

c = [[a[i][j]*b[i][j] for j in range(col)] for i in range(row)]
print(c)

28

В двумерно массиве найти столбец, сумма элементов которого максимальна. Вычесть элементы этого столбца из соответствующих элементов остальных столбцов. Распечатать массив.

29

Отсортировать двумерный массив алгоритмом пузырька.

from random import randint


def bubble_sorting(arr):
    for i in range(len(arr)-1, 0, -1):
        for j in range(i):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

data = [randint(1, 100) for i in range(10)]
print(data)
print(bubble_sorting(data))

30

Отсортировать двумерный массив алгоритмом выбора

# Сортировка выбором минимума

from random import randint

def Selection_Sorting(arr):
    l = len(arr)
    for i in range(l-1):
        min_index = i
        for j in range(i+1,l):
            if arr[j] < arr[min_index]:
                min_index = j
        arr[i], arr[min_index] = arr[min_index], arr[i]
    return arr

data = [randint(1,100) for i in range(10)]
print(data)
print(Selection_Sorting(data))
# Сортировка выбором максимума

from random import randint

def Selection_Sorting(arr):
    l = len(arr)
    for i in range(l-1,0,-1):
        max_index = i
        for j in range(i+1):
            if arr[j] > arr[max_index]:
                max_index = j
        arr[i], arr[max_index] = arr[max_index], arr[i]
    return arr

data = [randint(1,100) for i in range(10)]
print(data)
print(Selection_Sorting(data))
PreviousПростые

Last updated 6 years ago

Was this helpful?