Сложнее

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))

Last updated

Was this helpful?