Как умножить каждый элемент массива на число python
Перейти к содержимому

Как умножить каждый элемент массива на число python

  • автор:

Умножьте каждый элемент списка на число

Я хотел бы умножить все элементы списка на число. Я знаю другие способы сделать это, но я хочу знать, почему это не работает? Я получаю тот же список, что и вывод.

7 ответов

Он не работает, потому что вы используете цикл for в списке и определяете/изменяете глобальную переменную num , а не элементы в списке lst .

В этом случае в первом цикле num есть 1 (первый элемент в l ), и обязательно 1 * 2 дает 2 .

Затем num станет 5 , так как 5 является вторым элементом в списке. После num * 2 , num станет 10 .

Во втором цикле for он становится 8 * 2 , 16 . он не изменяется снова, потому что цикл for завершен.

Однако в этом цикле вы ничего не изменили в списке. Поскольку for получает только элементы в списке и помещает его во временную переменную.

И когда вы меняете эту временную переменную внутри цикла for , вы ничего не меняете в списке.

Вы не меняете элементы lst , выполните следующие действия:

Хорошо, поскольку вы написали «Я знаю другие способы сделать это, но я хочу знать, почему это не работает?» . Вот ваш ответ: вы только модифицируете временный цикл переменная num , а не сам список. Попробуйте следующее:

Вам нужно обновить lst.

Два чистых выражения:

изменить место на месте:

чтобы создать новый список:

Для ввода я бы предпочел явно разделить и преобразовать строку:

Лучше использовать ast.literal_eval , а затем eval из-за безопасности. Вы можете прочитать об этом здесь. Вы можете решить это с помощью понимания списка:

Перечисления списков быстрее, чем map с lambda . Timing

Как указывали все остальные, правильный способ сделать это путем индексации в список:

Немного о проходе по назначению

Ваш цикл, который использует нотацию for num in list , не изменяет список. Поскольку переменная цикла num принимает значение типа int на каждой итерации цикла, поскольку ints неизменяемы (то есть его значение не может быть изменено) в python, num получает копию целочисленного значения.

Это изменяется, когда объект в списке изменен и передается ссылкой. Рассмотрим следующее:

Теперь, поскольку myList содержит список объектов X, которые изменяются, переменная цикла el имеет ссылку, скопированную в нее. Ссылка указывает на тот же объект в памяти, на который указывает ссылка в исходном myList. Поэтому, когда вы меняете объект с помощью переменной цикла, объекты, упомянутые в исходном myList, также изменяются.

How to multiply individual elements of a list with a number?

I recommend taking a look at the NumPy tutorial for an explanation of the full capabilities of NumPy’s arrays:

You can use built-in map function:

or list comprehensions that is a bit more pythonic:

If you use numpy.multiply

It gives you as a result

Example of usage:

    The Overflow Blog
Linked
Related
Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.6.8.43486

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Как умножить каждый элемент в списке на число? [дубликат]

как я могу умножить каждый элемент my_list по 5? Вывод должен быть:

7 ответов

вы можете просто использовать список понимание:

обратите внимание, что понимание списка, как правило, является более эффективным способом сделать for петли:

в качестве альтернативы, вот решение с использованием популярного пакета панд:

или, если вы просто хотите список:

вы можете сделать это на месте так:

Это не требует дополнительного импорта и очень pythonic.

поскольку я думаю, что вы новичок в Python, давайте сделаем длинный путь, переберем ваш список, используя цикл for и умножим и добавим каждый элемент в новый список.

использование for loop

используя понимание списка, это также то же самое, что и использование for-loop, но более «pythonic»

невероятно быстрый подход состоит в том, чтобы сделать умножение векторизованным образом, а не зацикливаться на списке. Numpy уже предоставил очень простой и удобный способ для этого, который вы можете использовать.

обратите внимание, что это не работает с собственными списками Python. Если вы умножите число со списком, он повторит элементы как размер этого числа.

если вы хотите чистый подход на основе Python, используя понимание списка в основном наиболее подходящие для Python путь.

помимо понимания списка, как чисто функциональный подход, вы также можете использовать встроенный

Это один из способов сделать это . ваш учитель, вероятно, знает a очень понравилось. Так, наверное, в классе

numpy.matmul#

A location into which the result is stored. If provided, it must have a shape that matches the signature (n,k),(k,m)->(n,m). If not provided or None, a freshly-allocated array is returned.

**kwargs

For other keyword-only arguments, see the ufunc docs .

New in version 1.16: Now handles ufunc kwargs

The matrix product of the inputs. This is a scalar only when both x1, x2 are 1-d vectors.

If the last dimension of x1 is not the same size as the second-to-last dimension of x2.

If a scalar value is passed in.

Complex-conjugating dot product.

Sum products over arbitrary axes.

Einstein summation convention.

alternative matrix product with different broadcasting rules.

The behavior depends on the arguments in the following way.

If both arguments are 2-D they are multiplied like conventional matrices.

If either argument is N-D, N > 2, it is treated as a stack of matrices residing in the last two indexes and broadcast accordingly.

If the first argument is 1-D, it is promoted to a matrix by prepending a 1 to its dimensions. After matrix multiplication the prepended 1 is removed.

If the second argument is 1-D, it is promoted to a matrix by appending a 1 to its dimensions. After matrix multiplication the appended 1 is removed.

matmul differs from dot in two important ways:

Multiplication by scalars is not allowed, use * instead.

Stacks of matrices are broadcast together as if the matrices were elements, respecting the signature (n,k),(k,m)->(n,m) :

The matmul function implements the semantics of the @ operator introduced in Python 3.5 following PEP 465.

It uses an optimized BLAS library when possible (see numpy.linalg ).

For 2-D arrays it is the matrix product:

For 2-D mixed with 1-D, the result is the usual.

Broadcasting is conventional for stacks of arrays

Vector, vector returns the scalar inner product, but neither argument is complex-conjugated:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *