for - использовать распаковку кортежей прямо в заголовке цикла:
  
for first, second in [(1, 2), (3, 4)]:
    print(first, second)
  
    Оптимальный способ перебрать список кортежей в цикле for в Python - использовать распаковку кортежей непосредственно в объявлении цикла.  Это самый читаемый и эффективный способ.
  
Пример:
    
my_list = [(1, 2), (3, 4)]
for first, second in my_list:
    print(f"Первый элемент: {first}, Второй элемент: {second}")
# Альтернативный пример с использованием имен, отражающих смысл данных:
data = [("Иван", 25), ("Мария", 30)]
for name, age in data:
  print(f"Имя: {name}, Возраст: {age}")
    
  
  Почему это оптимально:
tuple[0], tuple[1] и т.д.).  Это немного ускоряет выполнение кода, особенно для больших списков.
    Неправильный способ:
    
my_list = [(1, 2), (3, 4)]
for item in my_list:
    first = item[0]
    second = item[1]
    print(f"Первый элемент: {first}, Второй элемент: {second}")
    
  
  
    Хотя этот код и работает, он менее читаем и эффективен, чем метод с распаковкой в цикле for.  В первом варианте мы явно обращаемся к элементам кортежа по индексу, что увеличивает длину кода и вероятность ошибок.
  
    Важное замечание: Убедитесь, что длина кортежа соответствует количеству переменных, используемых для распаковки. Иначе Python выдаст ошибку ValueError: too many values to unpack (expected X) или ValueError: not enough values to unpack (expected X, got Y).