Для работы с циклическими массивами

Я хотел бы написать эти выражения более красиво, с циклом for. Я должен сделать это 4 раза для u1, u2, v1 и v2 и каждый раз сохранять эти 3 массива.

delta_u1_up_down = [u1[2] - u1[1], u1[4] - u1[3], u1[6] - u1[5],
                        u1[8] - u1[7], u1[10] - u1[9], u1[12] - u1[11], u1[14] - u1[13],
                        u1[16] - u1[15], u1[18] - u1[17]]

delta_u1_first = [u1[1] - u1[17], u1[3] - u1[17], u1[5] - u1[17], u1[7] - u1[17],
                      u1[9] - u1[17], u1[11] - u1[17], u1[13] - u1[17], u1[15] - u1[17],
                      u1[2] - u1[18], u1[4] - u1[18], u1[6] - u1[18], u1[8] - u1[18],
                      u1[10] - u1[18], u1[12] - u1[18], u1[14] - u1[18],
                      u1[16] - u1[18]]

delta_u1_previous = [u1[1] - u1[3], u1[3] - u1[5], u1[5] - u1[7], u1[7] - u1[9],
                         u1[9] - u1[11], u1[11] - u1[13], u1[13] - u1[15],
                         u1[15] - u1[17], u1[2] - u1[4], u1[4] - u1[6], u1[6] - u1[8],
                         u1[8] - u1[10], u1[10] - u1[12], u1[12] - u1[14],
                         u1[14] - u1[16], u1[16] - u1[18]]

Кто-нибудь может мне помочь? Порядок всегда одинаков.

Первый элемент u1 всегда игнорируется?

user2390182 10.02.2023 16:03

Что вы пробовали, и в чем ваша проблема?

Dorian Turba 10.02.2023 16:08

использовать range(start, stop, step)

cards 10.02.2023 16:08

@ user2390182 да еще и последний

TFAE 10.02.2023 16:13

Можете ли вы показать содержимое u1?

Dorian Turba 10.02.2023 16:14

@DorianTurba представляет собой массив с плавающей запятой размером 20.

TFAE 10.02.2023 16:15

Пожалуйста, отредактируйте свой вопрос, чтобы включить его в текст вопроса.

Dorian Turba 10.02.2023 16:18
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
7
70
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Проверьте диапазон (старт, стоп, шаг):

delta_u1_up_down  = [u1[i] - u1[i-1] for i in range(2, 19, 2)]
delta_u1_first    = [u1[i] - u1[17] for i in range(1, 17, 2)] +
                    [u1[i] - u1[18] for i in range(2, 18, 2)]
delta_u1_previous = [u1[i] - u1[i+2] for i in range(1, 17, 2)] +
                    [u1[i] - u1[i+2] for i in range(2, 18, 2)]

Используйте слайсы и zip

Вы можете делать такие манипуляции с нарезкой и zip

delta_u1_up_down = [e2 - e1 for e1, e2 in zip(u1[1::2], u1[2::2])]
delta_u1_first = [e - u1[-3] for e in u1[1:-3:2]] + [e - u1[-2] for e in u1[2:-2:2]]
delta_u1_previous = [e1 - e2 for e1, e2 in zip(u1[1::2], u1[3::2])] + [e1 - e2 for e1, e2 in zip(u1[2::2], u1[4::2])]

Вот тест для проверки результата, предполагая, что длина u равна 20.

u1 = list(range(20))

delta_u1_up_down = [u1[2] - u1[1], u1[4] - u1[3], u1[6] - u1[5],
                        u1[8] - u1[7], u1[10] - u1[9], u1[12] - u1[11], u1[14] - u1[13],
                        u1[16] - u1[15], u1[18] - u1[17]]

delta_u1_first = [u1[1] - u1[17], u1[3] - u1[17], u1[5] - u1[17], u1[7] - u1[17],
                      u1[9] - u1[17], u1[11] - u1[17], u1[13] - u1[17], u1[15] - u1[17],
                      u1[2] - u1[18], u1[4] - u1[18], u1[6] - u1[18], u1[8] - u1[18],
                      u1[10] - u1[18], u1[12] - u1[18], u1[14] - u1[18],
                      u1[16] - u1[18]]

delta_u1_previous = [u1[1] - u1[3], u1[3] - u1[5], u1[5] - u1[7], u1[7] - u1[9],
                         u1[9] - u1[11], u1[11] - u1[13], u1[13] - u1[15],
                         u1[15] - u1[17], u1[2] - u1[4], u1[4] - u1[6], u1[6] - u1[8],
                         u1[8] - u1[10], u1[10] - u1[12], u1[12] - u1[14],
                         u1[14] - u1[16], u1[16] - u1[18]]

print(delta_u1_up_down)  # [1, 1, 1, 1, 1, 1, 1, 1, 1]
delta_u1_up_down = [e2 - e1 for e1, e2 in zip(u1[1:-1:2], u1[2:-1:2])]
print(delta_u1_up_down)  # [1, 1, 1, 1, 1, 1, 1, 1, 1]

print(delta_u1_first)  # [-16, -14, -12, -10, -8, -6, -4, -2, -16, -14, -12, -10, -8, -6, -4, -2]
delta_u1_first = [e - u1[-3] for e in u1[1:-3:2]] + [e - u1[-2] for e in u1[2:-2:2]]
print(delta_u1_first)  # [-16, -14, -12, -10, -8, -6, -4, -2, -16, -14, -12, -10, -8, -6, -4, -2]

print(delta_u1_previous)  # [-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]
delta_u1_previous = [e1 - e2 for e1, e2 in zip(u1[1:-1:2], u1[3:-1:2])] + [e1 - e2 for e1, e2 in zip(u1[2:-1:2], u1[4:-1:2])]
print(delta_u1_previous)  # [-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]

Другие вопросы по теме

Похожие вопросы

Можно ли перебирать элементы в списке и возвращать фрагменты списка на основе повторяющихся символов?
Как проверить каждую тенденцию строки с некоторым допуском, игнорируя значения np.nan в фрейме данных pandas
Как использовать функцию click() селена в случае атрибута «кнопка» в HTML?
Сохранять порядок букв при замене символов LTR символами RTL в слове на уровне байтов
Как разрезать массив numpy, используя массивы индексов с разными формами?
Ошибка Mypy - несовместимый тип возвращаемого значения
Свернуть вместе строку pandas, соответствующую списку условий
Как извлечь определенные значения из файла xml, используя python xml.etree.ElementTree, повторяя до тех пор, пока идентификатор не будет найден внутри скрытого дочернего узла?
Панды заполняют фрейм данных в соответствии с операциями со значениями столбцов и строк
Python: перебор зависимых классов