Обробка списків у циклах. Утворення списків з допомогою генераторів списків. Ітерації по списках. Представлення та обробка матриць з допомогою списків. Операція in

Обробка списків у циклах. Утворення списків з допомогою генераторів списків. Ітерації по списках. Представлення та обробка матриць з допомогою списків. Операція in


Зміст



1. Приклади використання операторів циклу for, while зі списками
1.1. Формування списку з допомогою циклу while. Утворення ряду Фібоначчі

У прикладі формується список з чисел Фібоначчі. Кожне число в ряді Фібоначчі представляє собою суму двох попередніх чисел. У програмі використовуються наступні змінні

  • Max – максимально допустиме значення числа в ряді;
  • A – результуючий список чисел;
  • x1, x2, x3 – допоміжні змінні.

Текст програми наступний

# Формування списку з допомогою циклу while
# Ряд Фібоначчі від 1 до 100
Max = 100
x1 = 1
x2 = 1
x3 = x1+x2

A = [x1,x2,x3] # створити список з чисел

while x3<=Max:
    x1=x2
    x2=x3
    A+=[x2]
    x3=x1+x2
print("A = ",A)

Результат виконання програми

A = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

 

1.2. Пошук елементу в списку з допомогою циклу for

У прикладі визначається позиція заданого елементу в списку рядків. Якщо шуканого елементу немає в списку, тоді після пошуку значення позиції рівне -1.

# Пошук рядка в масиві рядків
# Задано список рядків
L = [ 'abc', 'bcd', 'def', 'abd', 'bcd', 'hef', 'inn' ]

s = str(input("Input string:")) # s - шуканий рядок
pos=-1 # шукана позиція
k=0 # поточна позиція в циклі

for t in L: # обхід циклу
    if s==t:
        pos=k
        break
    k=k+1

print("pos = ",pos)

Результат виконання програми

Input string:inn
pos = 6

 

1.3. Утворення нового списку з існуючого з використанням операції for. Реверсування списку

У прикладі реверсується заданий список A. Результат записується в список B.

# Реверсування списку
# Заданий список
A = [ 2.3, 'a', "abcde", -1220, True, False ]
B = [] # Результуючий список

for a in A:
    B = [a] + B

print("A = ", A)
print("B = ", B)

Результат виконання програми

A =   [2.3, 'a', 'abcde', -1220, True, False]
B =   [False, True, -1220, 'abcde', 'a', 2.3]

 

2. Що таке генератори списків? Приклади

Генератор списку – це засіб мови Python, який дозволяє утворити інший список з вже існуючого списку. Елементи іншого списку можуть формуватись за деяким виразом (наприклад, збільшуватись на 10).

Більш детально про особливості використання генераторів списків описується в темі:

 

2.1. Приклад генерування списку з рядка символів
# Генератори списків
# згенерувати список A з рядка 'Hello'
A = [i for i in 'Hello'] # A =   ['H', 'e', 'l', 'l', 'o']
print("A = ", A)

Результат виконання програми

A = ['H', 'e', 'l', 'l', 'o']

 

2.2. Приклад генерування списку з рядка символів з допомогою заданого виразу

У випадку генерування списку можна задати особливі умови створення кожного елементу списку.

У попередньому пункті 2.1 було згенеровано список з рядка. У нижченаведеному прикладі кожен символ з рядка дублюється 3 рази:

# Генератори списків
# згенерувати список A з рядка 'Hello', символ c дублюється 3 рази
A = [c*3 for c in 'Hello'] # A = ['HHH', 'eee', 'lll', 'lll', 'ooo']
print("A = ", A)

Як видно з вищенаведеного коду, кожен елемент нового списку формується на основі деякої закономірності – деякого виразу. У даному випадку, це потроєння c*3 кожного елементу (символу) в списку

A = [c*3 for ... ]

Вираз, з допомогою якого утворюються елементи в новостворених списках може бути будь-яким згідно з поставленою задачею.

Результат виконання програми

A = ['HHH', 'eee', 'lll', 'lll', 'ooo']

 

2.3. Приклад генерування списку цілих чисел
# Створення нового списку з допомогою генератора списку
# Створити список з 5 елементів
L = list(range(5)) # L = [0, 1, 2, 3, 4]

# генератор списку: помножити кожен елемент списку L на 2
L2 = [t*2 for t in L] # L2 = [0, 2, 4, 6, 8]

print("L   = ", L)
print("L2 = ", L2)

Результат виконання програми

L = [0, 1, 2, 3, 4]
L2 = [0, 2, 4, 6, 8]

 

3. Ітерації по спискам. Приклади

Для обходу списку (ітерації по списку) в мові Python найкраще підходить оператор циклу for.

Більш детально про використання ітераторів для обходу списків описується в темі:

 

3.1. Приклад обчислення суми елементів списку з допомогою ітерації по списку
# Обхід списків
# Задано список
A = [ 1, 2, 5, -4, 4, 10 ]

# обчислення суми елементів списку
s = 0
for t in A: # ітерація по списку A
    s = s + t

print("A = ", A)
print("Summ = ", s)

Результат виконання програми

A = [1, 2, 5, -4, 4, 10]
Summ = 18

 

3.2. Приклад обчислення суми елементів двовимірної матриці з допомогою ітерації по списку

У прикладі обчислюється сума елементів двовимірної матриці M з допомогою обходу списку.

# Ітерації по списках
# Обхід матриці дійсних чисел

# Задано матрицю розміром 3*4
M = [
    [ 5.2, 2.8, 1.1, 4.4 ],
    [ 0.8, 2.3, 8.4, 5.0 ],
    [ 1.1, 3.2, 5.5, 1.0 ],
    ]

# обчислення суми елементів матриці, значення яких більше 5.0

s = 0
for m in M:
    for n in m:
        if n>5.0:
            s += n

print("M = ", M)
print("Summ = ", s)

Результат виконання програми

M =   [[5.2, 2.8, 1.1, 4.4], [0.8, 2.3, 8.4, 5.0], [1.1, 3.2, 5.5, 1.0]]
Summ =   19.1

 

4. Перевірка на входження в список. Операція in. Приклади
4.1. Приклад визначення заданого елементу в списку з допомогою операції in

У прикладі використовується операція in для заповнення значення логічної змінної b.

# Операція in - визначення наявності елементу в списку
A = [ 'abc', 7, 8.5, -100 ]

# Використання операції in
item = 8.5 # шуканий елемент
b = item in A # b = true

print("b = ",b)

Результат виконання програми

b = True

 

4.2. Приклад визначення елементу в матриці з використанням операції in та операторів for, if

У прикладі визначається наявність заданого символу в заданій матриці. Програма виводить відповідне повідомлення.

Текст програми наступний:

# Операція in - визначення наявності елементу в матриці
# задана матриця
Matrix = [ [ 'a', 'c', 'f', ';' ],
           [ 'z', 't', 'd' ],
           [ 'x', 'k' ]
         ]

symbol = str(input("Input symbol: "))

f_is = False

for row in Matrix: # переміщення по вкладених списках (рядках)
    if symbol in row: # операція in
        f_is = True
        break

if f_is:
    print("Символ є в матриці")
else:
    print("Символу немає в матриці")

Результат виконання програми

Input symbol: x
Символ є в матриці

 


Зв’язані теми