如何使用python将字符串中的每个元素相乘

如何使用python将字符串中的每个元素相乘,python,list,matrix,Python,List,Matrix,我写了一些像下面这样的文章 new_list = ["000","122","121","230"] for item in new_list: r = [np.matrix([[0.5,0.5],[0,1]]), np.matrix([[0.5,0.25],[0,1]]), np.matrix([[0.5,0.25],[0,1]]), np.matrix([[0.5,0],[0,1]])] (W0,W1,W2,W3) = r

我写了一些像下面这样的文章

new_list = ["000","122","121","230"]

for item in new_list:
   r = [np.matrix([[0.5,0.5],[0,1]]),
        np.matrix([[0.5,0.25],[0,1]]),
        np.matrix([[0.5,0.25],[0,1]]),
        np.matrix([[0.5,0],[0,1]])]

   (W0,W1,W2,W3) = r

   for i in item:
          i == 0
          if item[i] == 0:
             return W0
          elif item[i] == 1:
             return W1
          elif item[i] == 2:
             return W2
          else:
             return W3
          i = i + 1

list_new = [np.matrix([1,0]) * new_list * np.matrix([0.5],[1])]

print(list_new)
我想创建一个程序,例如,当列表中的输入为“122”时,它会将“122”中的每个元素乘以矩阵W1*W2*W2。 最终结果应该是这样的

np.matrix([1,0]) * new_list2 * np.matrix([0.5],[1])

这里应该是新列表中的所有乘法结果。意义

new_list2 = [W0*W0*W0,W1*W2*W2,...]
我运行这段代码并不断得到一个语法错误

"return" outside function
我想问一下我是否遗漏了一些东西,或者是否有其他的函数/方法可以使用python来完成它。我正在使用Python 3.5
谢谢你的回答

正如错误消息所说,您在函数外部使用“return”,这是没有意义的,因为“return”意味着“立即退出函数并将此值传递给调用方(或者
None
如果未指定值)。如果您不在函数内部,则没有要返回的调用方

正如错误消息所说,您在函数外部使用“return”,这是没有意义的,因为“return”意味着“立即退出函数并将此值传递给调用方(或者
None
如果未指定值)。如果您不在函数内部,则没有要返回的调用方

像这样的

import numpy as np
from functools import reduce

new_list = ["000", "122", "121", "230"]

matrices = [
    np.matrix([[0.5,0.50],[0,1]]),
    np.matrix([[0.5,0.25],[0,1]]),
    np.matrix([[0.5,0.25],[0,1]]),
    np.matrix([[0.5,0.00],[0,1]])
]

def multiply(s):
    mt_seq = (matrices[i] for i in map(int, item))
    return reduce(np.multiply, mt_seq) # or reversed(mt_seq)

for item in new_list:
    print(multiply(item))
您可以使用
int(digit)
转换字符串中的每个数字,例如
int('2')
,并使用
map(int,'01234')
对字符串的每个元素进行转换

然后,只需将这些矩阵相乘即可。(对不起,我不熟悉
np.multiply
np.matrix
,可能您需要颠倒多次应用的顺序)

reduce(fun,seq)
将fun应用于seq,如下所示:
fun(fun(fun(fun)(seq[0],seq[1]),seq[2]),…)
诸如此类

import numpy as np
from functools import reduce

new_list = ["000", "122", "121", "230"]

matrices = [
    np.matrix([[0.5,0.50],[0,1]]),
    np.matrix([[0.5,0.25],[0,1]]),
    np.matrix([[0.5,0.25],[0,1]]),
    np.matrix([[0.5,0.00],[0,1]])
]

def multiply(s):
    mt_seq = (matrices[i] for i in map(int, item))
    return reduce(np.multiply, mt_seq) # or reversed(mt_seq)

for item in new_list:
    print(multiply(item))
您可以使用
int(digit)
转换字符串中的每个数字,例如
int('2')
,并使用
map(int,'01234')
对字符串的每个元素进行转换

然后,只需将这些矩阵相乘即可。(对不起,我不熟悉
np.multiply
np.matrix
,可能您需要颠倒多次应用的顺序)


reduce(fun,seq)
将fun应用于seq,如下所示:
fun(fun(fun(fun)(seq[0],seq[1]),seq[2]),…)

好的……谢谢你的回答。我将尝试搜索更多关于pythonok中return的用法…谢谢你的回答。我将尝试搜索更多关于在python中使用return的信息