3 простых метода перемещения по спискам Python
Перебор списка — невероятно распространенная задача, поэтому убедитесь, что вы выполняете ее наилучшим образом.
Python — один из самых быстрорастущих языков программирования. Разработчики используют его для машинного обучения и обработки данных, а также для других типов приложений. Прежде чем приступить к изучению более сложных аспектов языка, вам следует освоить одну из наиболее распространенных структур данных: списки.
Списки в Python — это массивы, знакомые по другим языкам программирования, таким как C и C++. Вы можете изменить размер списка, и для удобства Python использует различные методы создания списков. В списке можно хранить несколько типов данных, например строки, объекты и даже другие списки.
Зачем использовать разные методы зацикливания?
У вас может возникнуть вопрос, стоит ли изучать различные способы перемещения по списку Python, если с этой задачей может справиться простой цикл for.
Часто проще использовать сокращенный метод, такой как понимание списка или лямбда-функция, чтобы сделать код кратким и менее загроможденным. Это также помогает решить, какой метод обхода будет наиболее эффективным для сложного списка с множеством элементов.
Что еще более важно, интервьюеры часто задают сложные вопросы по обходу списка. Если вы знаете различные способы перемещения по спискам, вы будете лучше подготовлены к ответам на эти сложные вопросы.
1. Обход с использованием метода цикла и диапазона
Одним из наиболее распространенных методов перемещения по списку Python является использование цикла for, и они очень похожи на другие языки программирования.
arr = [10, 20, 30, 40]
for val in arr:
print('value', val)
Альтернативно вы также можете использовать метод range() , чтобы лучше контролировать цикл for . Метод range() принимает три аргумента:
- start: Обозначает начальный индекс обхода цикла for.
- stop: сообщает программе конечный/остановочный индекс для обхода цикла for. В качестве останавливающего индекса обычно используют длину списка (количество элементов).
- шаг: Аргумент размера шага не является обязательным. Если он предусмотрен, он устанавливает величину, на которую цикл for каждый раз увеличивает свой счетчик выполнения. По умолчанию размер шага равен 1.
Чтобы пройти по списку Python с помощью range():
arr = [10, 20, 30, 40, 50, 60]
for key in range(0, len(arr), 2):
print('num', key)
В приведенном выше примере выполняется цикл for от индекса 0 до достижения длины массива и увеличивается счетчик цикла на 2.
2. Сокращенный обход с использованием понимания списка
Одна из наиболее интуитивно понятных функций Python — понимание списков. Он позволяет вам писать простые однострочные решения для множества различных проблем.
Например, чтобы вычислить квадрат первых 10 чисел, вы можете просто использовать:
sq = [x ** 2 for x in range(10)]
Учитывая список чисел, вы можете распечатать их, используя понимание списка, следующим образом:
arr = [1, 3, 5, 7, 9]
[print(val) for val in arr]
Понимание списков очень мощное и может значительно упростить программирование после освоения, поэтому обязательно потратьте некоторое время на их хорошую практику.
3. Использование встроенных лямбда-функций для обхода списка
Обычно мы объявляем функции в Python с помощью ключевого слова def и должны предоставить выделенное тело и заголовок функции. Лямбда-функции — это мощная функция Python, значительно упрощающая написание простого и короткого кода. У них нет имени и они могут содержать только одно выражение. Однако вы можете передать любое количество параметров в лямбда-функцию.
В сочетании с методом map() лямбда-функция может эффективно работать как цикл for. Чтобы распечатать список чисел, используя комбинацию лямбда-функций и map():
arr = [1, 3, 4, 5, 6, 7, 8]
myFun = list(map(lambda z:z, arr))
print(myFun)
Циклы Python просты, но распространены
Циклы необходимы в каждом языке программирования, и Python не является исключением. Большинство программ, которые вы пишете, в какой-то момент в той или иной форме включают цикл.
Это имеет двоякое значение, если вы хотите использовать Python для проектов по науке о данных или машинному обучению.