Когда я начинаю изучать Python, мне кажется полезным сравнить его с текущим языком, который я уже знаю, в данном случае это будет Javascript. После того, как я изучил основы переменных Python, функций и операторов if/else (ознакомьтесь с этим постом в блоге, чтобы узнать больше об основах Python), следующим шагом было применить его в простой задаче, решив ее на Javascript, а затем закодируйте тот же ответ в Python, чтобы поэкспериментировать с различиями в синтаксисе.
Задача проста: определить минимальное расстояние между двумя повторяющимися элементами массива. Ссылка на задачу Hackerrank здесь: https://www.hackerrank.com/challenges/minimum-distances/problem
// Javascript solution function minimumDistances(a) { let map = {} let results = [] for (let i = 0; i<a.length; i++){ let num = a[i] if(map[num] >= 0){ results.push(i-map[num]) }else{ map[num] = i } } return results.length === 0? -1 : Math.min(...results) } # Python solution def minimumDistances(a): map = {} results = [] i = 0 for num in a: if str(num) in map: results.append(i-map[str(num)]) else: map[str(num)] = i i += 1 return -1 if len(results) == 0 else min(results)
Вот некоторые отличия, которые я понял:
- Блоки кода:
– Javascript использует фигурные скобки {} (аналогично большинству языков)
– Python использует выравнивание по табуляции для организации блоков кода (заставляет вас упорядочиваться по вкладкам) - Объявление переменных:
- Javascript требует тип переменной (Var/Let/Cons, подробности смотрите в этом блоге)
- Python не требует типа переменной - Цикл for:
– В Javascript есть 3 типа циклов for (for, for..in, for..of)
– В Python есть только цикл for…in (вам нужно указать счетчик вне цикла , аналогично циклу while в JS) - Методы массива:
— в Javascript есть метод «push» для добавления в конец
— в Python есть метод «append» для добавления в конец - Длина массива:
— Javascript рассматривает длину как атрибут массива
— Python предлагает метод для вычисления длины списка - Условие оператора if/else:
— Javascript требует, чтобы вы указали, что 0 является возможным значением
— Python позволяет вам проверить существование - Ссылка на объект/словарь:
– Javascript позволяет вам динамически проверять число как ключ.
– Python требует, чтобы вы преобразовали число в строку, чтобы проверить его как ключ. - Тернарный:
- Структура Javascript [условие]? [результат, если истина]:[результат, если ложь]
- структура Python [результат, если истина], если [условие], иначе [результат, если ложь]
До сих пор кажется, что Javascript лучше, когда дело доходит до ссылки на информацию и содержит атрибуты со сложными типами данных (массивы/объекты), тогда как Python кажется более организованным/структурированным/согласованным с вычислениями и ссылками (например, длина, преобразование числа нанизывать и др.). Я буду делиться с вами новыми открытиями по мере продолжения изучения Python.