在Python中,列表支持与整数的乘法运算,但表示的是列表元素的重复,并生成新列表,如:
>>> [1,2,3]*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
Python列表不支持与整数的加、减、除运算,也不支持列表之间的减、乘、除操作,而加法运算则表示列表元素的合并,并生成新列表,如:
>>> [1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]
对于向量而言,经常需要这样的操作,例如向量所有分量同时加、减、乘、除同一个数,或者向量之间的加、减、乘、除运算,Python列表不支持这样的操作,但可以借助于内置函数或运算符模块来实现,如:
>>> import random
>>> x = [random.randint(1,100) for i in range(10)] #生成10个介于[1,100]之间的随机数
>>> x
[46, 76, 47, 28, 5, 15, 57, 29, 9, 40]
>>> x = list(map(lambda i: i+5, x)) #所有元素同时加5
>>> x
[51, 81, 52, 33, 10, 20, 62, 34, 14, 45]
>>> x = list(map(lambda i: i//5, x)) #所有元素同时对5求整商
>>> x
[10, 16, 10, 6, 2, 4, 12, 6, 2, 9]
>>> x = [random.randint(1,10) for i in range(10)]
>>> x
[2, 2, 9, 6, 7, 9, 2, 1, 2, 7]
>>> y = [random.randint(1,10) for i in range(10)]
>>> y
[8, 1, 9, 7, 1, 5, 8, 4, 1, 9]
>>> import operator
>>> z = sum(map(operator.mul, x, y)) #向量内积
>>> z
278
>>> list(map(operator.add, x, y)) #向量对应元素相加
[10, 3, 18, 13, 8, 14, 10, 5, 3, 16]
>>> list(map(operator.sub, x, y))
[-6, 1, 0, -1, 6, 4, -6, -3, 1, -2]
>>> x = [random.randint(1,10) for i in range(5)]
>>> x
[1, 7, 9, 10, 2]
>>> list(map(operator.add, x, [3 for i in range(len(x))])) #向量所有元素同时加3
[4, 10, 12, 13, 5]