2011-11-19 30 views
28
S=[22, 33, 45.6, 21.6, 51.8] 
P=2.45 

đây S là một mảngLàm cách nào để nhân các phần tử riêng lẻ của một danh sách với một số?

Làm thế nào tôi sẽ nhân này và nhận được giá trị?

SP=[53.9, 80.85, 111.72, 52.92, 126.91] 
+5

Trong Python S không phải là một mảng, nó là một danh sách. Có một sự khác biệt rất lớn giữa hai loại container. Nếu bạn muốn mảng số, hãy sử dụng numpy. – talonmies

+2

Không, S thậm chí không phải là danh sách – joaquin

+0

@joaquin: Hãy cầu nguyện cho biết 'S' là gì, nếu nó không phải là một danh sách? – talonmies

Trả lời

26

Bạn có thể sử dụng built-in map chức năng:

result = map(lambda x: x * P, S) 

hoặc list comprehensions đó là một chút pythonic hơn:

result = [x * P for x in S] 
+4

Cũng giống như một lưu ý, các hoạt động trên mảng, như phép nhân vô hướng được tối ưu hóa cao trong gọn gàng, và nhanh hơn đáng kể so với việc hiểu danh sách. Nó thường được khuyến khích để không xử lý mảng numpy như danh sách python. – JoshAdel

+0

Mẹo hay. Đã không nhận thấy 'numpy' trong thẻ. –

+1

Tôi thấy những hiểu biết đó hoàn toàn không thể hiểu được. –

46

Trong NumPy nó là khá đơn giản

import numpy as np 
P=2.45 
S=[22, 33, 45.6, 21.6, 51.8] 
SP = P*np.array(S) 

Tôi khuyên bạn nên nhìn vào các hướng dẫn NumPy cho một lời giải thích của các khả năng đầy đủ của mảng NumPy của:

http://www.scipy.org/Tentative_NumPy_Tutorial

12

Nếu bạn sử dụng numpy.multiply

S = [22, 33, 45.6, 21.6, 51.8] 
P = 2.45 
multiply(S, P) 

Nó mang đến cho bạn kết quả là

array([53.9 , 80.85, 111.72, 52.92, 126.91]) 
Các vấn đề liên quan