Обработка списков в циклах. Образование списков с помощью генераторов списков. Итерации по спискам. Представление и обработка матриц с помощью списков. Операция 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
Символ есть в матрице

 


Связанные темы