Практична робота.
Алгоритми з операціями та функціями
над cписками
мовою Python.
Завдання 1.
Створити та реалізувати алгоритм, що використовує операцію об’єднання
списків та множення цілого числа
на список. Зразок алгоритму, що
використовує об’єднання та множення списків мовою Python:
T1=[4, 5, 6] # оголошується список Т1,
який має посилання на список із трьох чисел
T2=[1, 2, 3] # оголошується список Т2,
який має посилання на список із трьох чисел
T=2*T1+3*T2 # оголошується новий список Т, який утвориться із двох різних
списків (Т має 15 елементів)
M=[0]*3
# оголошується список М, який посилається на список [0,0,0]
for i in range(len(M)):
# оголошується цикл, який має лічильник,
що не перевищує довжину М1.
M[i]=2*T1[i]+3*T2[i] # арифметичне множення і додавання відповідних елементів із 2 різних списків.
print T #виводиться на екран список T на 15 елементів
print M #[11,16,21]-виводиться на екран список M.
Протестуйте алгоритм для: 1) T1=[‘(2-f)’, ‘(7-5n)’, ‘-(2+s)’ ; T2=[‘7’, ‘-3’, ‘2’] 2) T1=[-564, -155, -136] ; T2=[7.7, -3.5, 6.8]
Завдання 2.
Створити та реалізувати алгоритм, що використовує операцію утворення списку з випадкових об’єктів.
Зразок алгоритму, що використовує генерування
випадкових об’єктів мовою Python:
import random
# виклuкається
модуль, що генерує випадкові об’єкти
M1=['analysis',
'synthesis', 'studying', 'research'] # оголошується список M1 із невипадкових
символьних рядків
K=['None']*4 # оголошується список K= ['None', 'None',
'None', 'None']
N=['None']*4 # оголошується список N= ['None',
'None', 'None', 'None']
for i in range(len(M1)): # оголошується цикл з лічильником ,
що не перевищує довжину М1
N[i]=
random.choice(M1)
# присвоює
будь-яке(випадкове) значення із списку М1
K[i]=
random.choice(M1)
# присвоює ,будь-яке(випадкове) значення із
списку М1
K11= random.randint(0,10) #оголошується число к11
з посиланням на випадковy цифру.
P=random.gauss(1,10) #оголошується число P з посиланням на випадкове
дробове число.
print 'M1=',M1
print'N=', N #виводиться на екран вміст списків з випадковими елементами
print'K=',K #виводиться на екран вміст
списків з випадковими елементами
print 'K11=',K11, 'P=',P,
' K11-P*random number(10, 100)=', K11-P*random.randint(10,100) #виводиться результат обчислення «замороченого» тобто обрахованого
випадкового цілого числа
print '2**K11-4*K11+random.randint(100,1000)=',
2**K11-4*K11+random.randint(100,1000)
Протестуйте алгоритм декілька разів.
Завдання 3.
Створити та реалізувати алгоритм, що використовує операцію заміни елемента в списку
з різних об’єктів та пошук найбільшого
елемента в списку.
Зразки алгоритмів, що використовує пошук найбільшого
елемента в списку об’єктів мовою Python:
print ' *********ОПЕРАЦІЇ
НАД СПИСКАМИ, що містять різні числа та
рядки******* '
lst1=[1,2,3, 'analysis', 'synthesis', 'studying', 'research'] # оголошується в список lst1 з числами та
рядками
print 'lst1=', lst1 #виводиться на екран cписок
lst1[0]=-1; lst1[1]='-n'; lst1[2]='-3n'; # оголошується в списку заміна деяких елементів на
інші
print 'lst1=', lst1 #виводиться на
екран cписок
print 'max(lst1)= ', max(lst1)
#виводиться
на екран найбільший символ за його кодом
print 'min(lst1)= ', min(lst1)
#виводиться на екран найменший символ за його кодом
print ' *********ОПЕРАЦІЇ
НАД СПИСКАМИ, що містять числа******* '
lst2=[-4.7, -5.8, 6.3] # оголошується список lst2, який має
посилання на список із трьох чисел
lst2[0]=-20.05 # оголошується в списку заміна третього
елемента на на число -20.05
lst2[1]=-18.35 # оголошується в списку заміна
третього елемента на на число -18.35
lst2[2]=-10.55 # оголошується в списку заміна третього елемента на на число -10.55
MIN=min(lst2); MAX=max(lst2); middle=(MIN+MAX)/2 # пошук та рахунок в списку MAX, MIN, middle
print 'lst2=', lst2
#виводиться на екран cписок
print 'min(lst2)= ', MIN
#виводиться на екран найменше
число
print 'max(lst2)= ', MAX
#виводиться на екран найбільше
число
print 'middle(lst2)= ' ,middle # на екран cередина між найбільшим та
наймешим числами
print ' *********ОПЕРАЦІЇ
НАД СПИСКАМИ, що містять рядки******* '
lst3=['a', 'b', 'c','d','e','f'] # оголошується список lst3, який має посилання
на список із символів
print 'lst3=', lst3 # виводиться на екран cписок
for i in range(len(lst3)): # оголошується цикл, який має лічильник, що не перевищує довжину lst3.
lst3[i]=i*('1+h')+ 'A' # кратне множення на «і» символів «1+h» та
додавання «А»
до отриманих
символів
print 'lst3[i]=', lst3[i] # виводиться на
екран відповідний елемент зі cписку
print 'lst3=', lst3 # виводиться на
екран весь cписок
print 'min(lst3)= ', min(lst3) #виводиться на екран найменший символ за
кодом із списку
print 'max(lst3)=', max(lst3) #виводиться на екран найбільший
символ за кодом із списку
Протестуйте
ці три алгоритми
Завдання 4.
Створити та реалізувати алгоритм, що використовує функцію сортування списку та запис у зворотному порядку об'єктів у списку.
Зразок алгоритму, що використовує сортування та
зворотний запис об’єктів зі списку мовою
Python:
print '
*********ОПЕРАЦІЇ сортування і
реверсу НАД СПИСКАМИ, що містять числа
та рядки******* '
lst1=[20,5,15,4,-7,-19, 0, 17] # оголошується в список lst1 з цілими
числами
lst2=['a1','a2','a3','a4'] # оголошується в список lst2 з рядками
символів
print 'lst1=', lst1 #виводиться на екран cписок
print 'lst2=', lst2 #виводиться на екран cписок
lst1.sort(); # оголошується cортування за зростанням
елементів списку lst1
lst2.reverse() # оголошується в списку зворотний запис елементів
списку lst2
print ' sort_lst1= ', lst1 #виводиться на екран відсортований
список lst1
print 'reverse_lst2= ', lst2 #виводиться на екран зворотний запис списку lst2
Протестуйте алгоритм для: 1) LST1=[‘g-f’, ‘k-5n’, ‘-d+s’ ; LST2=[‘m’, ‘y’, ‘a’] 2) lst1=[-5, -1, -6] ; lst2=[7.7, -3.5, 0.8]
Завдання 5.
Створити та реалізувати алгоритм, що використовує функцію створення кортежів zip() на основі двох списків.
Зразок алгоритму, що використовує генерування кортежів
на основі двох списків мовою Python:
print '
*********ОПЕРАЦІЇ zip НАД двома СПИСКАМИ, що містять числа та рядки******* '
lst1=[1,2,3,4] # оголошується в список lst1 з цілими числами
lst2=['a','b','c','d'] # оголошується в список lst2 з рядками
символів
print 'lst1=', lst1 #виводиться на екран cписок
print 'lst2=', lst2 #виводиться на екран cписок
lst=zip(lst1, lst2) # оголошується новий список кортежів на
основі двох lst1 та lst2
print 'lst= ', lst #виводиться на екран список lst=[(1, 'a'), (2, 'b'), (3,
'c'), (4,
'd')]
Протестувати алгоритм.
Завдання 6.
Створити та реалізувати алгоритм, що використовує функцію map() на основі двох списків.
Зразок алгоритму, що використовує генерування нового списку на основі map() і двох списків мовою Python:
print '
*********ОПЕРАЦІЇ map() НАД двома СПИСКАМИ, що містять числа та рядки******* '
lst1=[1,2,3,4] # оголошується в список lst1 з цілими числами
lst2=[0.2, 0.4, 0.5, 0.8] # оголошується в список lst2 з рядками
символів
print 'lst1=', lst1 #виводиться на екран cписок
print 'lst2=', lst2 #виводиться на екран cписок
t1=map(lambda x: 2*x-1, lst1) # оголошується функція map() для списку lst1
t2=map(lambda x: int(10*x), lst2)
# оголошується функція map() для списку lst2
t3=map(lambda x,y: x*y+y/x, lst1, lst2) # оголошується функція map() для списків lst1 та lst2
t4=map(lambda x,y: (х+y-x*y)**(0.5), t1, t2) # оголошується функція map() для списків t1, t2
print 't1= ', t1 #виводиться на екран список
непарний чисел t1=[1,3, 5, 7]
print 't2= ', t2 #виводиться на екран список t2=[2.0, 4.0 ,5.0, 8.0]
print 't3= ', t3 #виводиться на екран список t3=[0.4, 1.0, 1.6666666666666667,
3.4000000000000004]
print 't4= ', t4 #виводиться на екран список t4=
[1.0, 1.2649110640673518, 1.4142135623730951,
1.2649110640673515]
print '
*********ОПЕРАЦІЯ map() для
пошуку скалярного добутку векторів******* '
lst11=[1,2,3,4] # оголошується в список lst11 з цілими
числами
lst22=[4,-3, 2,-1] # оголошується в список lst22 з цілими числами
T5=[0]*4
T5=map(lambda x,y: x*y, lst11,lst22)
S=0
for i in range(len(T5)):
S=S+T5[i]
print S
Протестувати алгоритм.
Завдання 7. Створити та
реалізувати алгоритм, що використовує основні функції перетворення структурних
даних.
Зразок
алгоритму, що використовує функції str(),int(),float(),ord(),chr(),divmod() мовою програмування Python:
print 'str(777)=', str(777) # перетворює число 777 в рядок
символів ‘777’
print 'int(‘777’)=',
int('777') # перетворює рядок cимволів ‘777’
в ціле число 777
print 'int(‘77’)**2=',
int('77')**2 # перетворює рядок cимволів ‘77’
і обчислює: 77**2
print 'float(‘7.077’)=',
float('7.077') # перетворює ‘7.077’ в дійсне
число 7,077
print 'float("7.0")-float("7.7")=', float('7.0')-float('7.7')
print 'ord(‘f’)=', ord('f'), 'ord("g")= ', ord('g') # перетворює cимвол ‘f’ в код символа
print 'ord(‘f’)+ ord("g") ' , ord('f')+ ord('g') #
перетворює cимволи ‘f’ та ‘g’ в cуму
print ' chr(125)=', chr(125) # перетворює число=код
символа в його cимвол ‘ ’
print '2*chr(124)+4*chr(125)=', 2*chr(124)+4*chr(125)
print 'divmod(17,4)=', divmod(17,4) # обчислює цілу частину від 17/4 та остачу