Шаг 65.
Основы языка Python.
Списки, кортежи, множества и диапазоны. Перебор элементов списка

    На этом шаге мы рассмотрим различные варианты перебора списка.

    Перебрать все элементы списка можно с помощью цикла for:

>>> arr = [1, 2, 3, 4, 5]
>>>  for i in arr: print (i, end=" ")
1 2 3 4 5

    Следует заметить, что переменную i внутри цикла можно изменить, но если она ссылается на неизменяемый тип данных (например, число или строку), то это не отразится на исходном списке:

>>> arr = [1, 2, 3, 4] # Элементы имеют неизменяемый тип (число)
>>> for i in arr: i += 10
>>> arr #  Список не изменился
[1, 2, 3, 4]
>>> arr = [ [1, 2], [3, 4] ] # Элементы имеют изменяемый тип (список)
>>> for i in arr: i[0] += 10
>>> arr #  Список изменился
[[11, 2], [13, 4]]

    Чтобы получить доступ к каждому элементу, можно, например, для генерации индексов воспользоваться функцией range (). Функция возвращает объект-диапазон, поддерживающий итерации, а с помощью диапазона внутри цикла for можно получить текущий индекс. Функция range () имеет следующий формат:

  range([<Начало>, ]<Конец>[, <Шаг>])

    Первый параметр задает начальное значение. Если параметр <Начало> не указан, то по умолчанию используется значение 0. Во втором параметре указывается конечное значение. Следует заметить, что это значение не входит в возвращаемый диапазон значений. Если параметр <Шаг> не указан, то используется значение 1. Для примера умножим каждый элемент списка на 2:

arr = [1, 2, 3, 4]
for i in range(len(arr)):
    arr[i] *= 2
print(arr) # Результат выполнения: [2, 4, 6, 8]

    Можно также воспользоваться функцией enumerate (<Объект> [, start=0]), которая на каждой итерации цикла for возвращает кортеж из индекса и значения текущего элемента списка. Умножим каждый элемент списка на 2:

arr = [1, 2, 3, 4]
for i, elem in enumerate(arr):
    arr[i] *= 2
print(arr) # Результат выполнения: [2, 4, 6, 8]

    Кроме того, перебрать элементы можно с помощью цикла while. Но в этом случае следует помнить, что цикл while работает медленнее цикла for. Для примера умножим каждый элемент списка на 2, используя цикл while:

arr = [1, 2, 3, 4]
i, с = 0, len(arr)
while i < с:
    arr[i] *= 2
    i += 1
print (arr) #  Результат выполнения: [2, 4, 6, 8] 

    На следующем шаге мы рассмотрим генераторы списков и выражения-генераторы.




Предыдущий шаг Содержание Следующий шаг