繁体   English   中英

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

[英]how to multiply each element in a string with python

我做了一些如下的写作

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

这里应该是new_list的所有乘法结果。 含义

new_list2 = [W0*W0*W0,W1*W2*W2,...]

我运行此代码,并不断收到语法错误,说

"return" outside function

我想问一下我是否错过了这里的东西,或者有其他功能/方式使用python来完成它。 我正在使用Python 3.5谢谢您的回答。

如错误消息所述,您在函数外使用“ 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.multiplynp.matrix不熟悉,也许您需要颠倒乘法的顺序)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM