# Является ли решение хорошим с точки зрения "антикостыльности"?

Stack Overflow на русском Asked on October 30, 2020

Столкнулся с задачей: есть список комплексных чисес vertexes = [v0, v1, ..., vn], необходимо получить список distances = [d0, d1, ..., ], причём distances[i] = abs(vertexes[i + 1] - vertexes[i])

Например, vertexes = [1 + 0j, 3 + 0j, 3 + 4j, 6 + 8j] => distances = [2, 4, 5]

Моё решение:

import functools

def calculate_distances(vertexes):
distances = []

functools.reduce(lambda a, b: distances.append(abs(b - a)) or b, vertexes)

return distances

vertexes = [1 + 0j, 3 + 0j, 3 + 4j, 6 + 8j]

distances = calculate_distances(vertexes)

print(distances)

# Out: [2.0, 4.0, 5.0]


Стоит ли писать такой код? Может есть решение изящнее или правильнее или (изящнее и правильнее)? После такого у меня остаётся ужасное послевкусие костыльности. Так ли это на самом деле?

Ну я бы вообще вот так написал:

distances = [abs(b - a) for b,a in zip(vertexes[1:],vertexes)]


Correct answer by CrazyElf on October 30, 2020

Я бы так делал:

import itertools

def pairwise(iterable):
a, b = itertools.tee(iterable)
next(b, None)
return zip(a, b)

def calculate_distances(vertexes):
return [abs(b - a) for a, b in pairwise(vertexes)]

vertexes = [1 + 0j, 3 + 0j, 3 + 4j, 6 + 8j]

distances = calculate_distances(vertexes)

print(distances)


Answered by dIm0n on October 30, 2020

## Related Questions

### Горизонтальная полоса прокрутки у столбца таблицы HTML CSS JS

2  Asked on February 4, 2021

### Исключить из массива пять минимальных элементов, сдвинув оставшиеся элементы к левому краю

2  Asked on February 4, 2021 by little_ray

### с++: проверка вхождения битовой последовательности в соответствующую маску с использованием bit manipulation instructions set

0  Asked on February 4, 2021

### Подскажите правильно ли я работаю с геолокацией и разрешениями

1  Asked on February 4, 2021 by kingkoval

### Java – скачивание файла из директории с большим количеством поддиректорий

0  Asked on February 4, 2021 by d-socolov

### Django, QuerySet

2  Asked on February 3, 2021

### Как получить значение дочернего элемента content_cls

0  Asked on February 3, 2021 by user423190

### как отключать таймер setInterval ? Работают параллельно несколько

1  Asked on February 3, 2021 by junior

### Как сделать так, чтобы сайдбар в WP видел шорткод с параметрами?

1  Asked on February 3, 2021

### Ошибка null object reference во ViewModel при попытке вызвать List из базы room с помощью rxJava (Single<List>)

0  Asked on February 3, 2021 by alex-rodionow

### Форматирование текста python telebot

2  Asked on February 3, 2021

### Selenium на Kotlin | Koltin

0  Asked on February 3, 2021

### Разделить long long на две части (Старшая – long) и (Младшая – unsigned long)

1  Asked on February 3, 2021 by sanlover

### Ошибка при добавлении элемента в динамический массив абстрактного класса c++ arduino

0  Asked on February 3, 2021

### Поиск различных чётных натуральных делителей чисел в определённом промежутке

2  Asked on February 3, 2021 by g1shy

### Как учесть русские символы для записи в файл?

0  Asked on February 2, 2021 by carbonex

### Сортировка товаров по одному товару от каждого продавца MYSQL 8

0  Asked on February 2, 2021 by antos_359

### Олимпиадная задача. Монетки

1  Asked on February 2, 2021 by asdfjsldfksjdsdjklas

### Удаление строки на основании данных в столбце

1  Asked on February 2, 2021 by aleksey-bolgov

### Книги и другие материалы для обучения

2  Asked on February 2, 2021 by qwertiy