Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何迭代字符串?_Python_Loops_Literate Programming - Fatal编程技术网

Python 如何迭代字符串?

Python 如何迭代字符串?,python,loops,literate-programming,Python,Loops,Literate Programming,我有这样的代码 " " 其中,QubitOperator是我正在使用的包中的一个命令。我怎样才能自动地迭代X、Y、Z和0、1、2。。。。创建phi?您现有的代码可能更干净,但假设您必须对8个以上的元素执行此操作: 从functools导入reduce 字母=['X','Y','Z'] 数字=['0','1','2'] pairs=[f'{l}{n}'表示l,字母表示n,数字表示n] 这就得到了['X0','X1','X2','Y0',…,'Z2'] 量子位=[成对x的量子位运算符x] 不确定将其

我有这样的代码

"

"


其中,QubitOperator是我正在使用的包中的一个命令。我怎样才能自动地迭代X、Y、Z和0、1、2。。。。创建phi?

您现有的代码可能更干净,但假设您必须对8个以上的元素执行此操作:

从functools导入reduce 字母=['X','Y','Z'] 数字=['0','1','2'] pairs=[f'{l}{n}'表示l,字母表示n,数字表示n] 这就得到了['X0','X1','X2','Y0',…,'Z2'] 量子位=[成对x的量子位运算符x] 不确定将其放入单个phi的最佳方式。join似乎合乎逻辑,但可能不起作用。 phi=减速器平均加速度,电流:平均加速度+电流,对 守则概览:

前三行基本上只是定义数据并将它们合并在一起。列表理解是一种两层的非官方术语,所以它将迭代字母,然后迭代数字,直到达到所有9个元素 第4行开始量子位=[…将成对创建的每个字符串包装在一个量子位运算符中。从技术上讲,这是不需要的,如果我自己编码的话,我可能会把它放在第3行。 如前所述,第5行不一定是最好的方法,但它是我能想到的最好的方法。reduce基本上允许您将一个内容列表压缩为其他内容-在本例中,我们将把所有内容连接到phi中。这将迭代量子位列表并将它们相加。将其展开可以得到接近t的内容o您已经完成的操作:QubitOperator'X0'+QubitOperator'X1'+…正如一位评论员指出的,for循环在这种情况下也可以工作。该代码如下所示: φ=量子位[0] 对于范围1中的i,lenqubits: φ=φ+量子位[i] 这里有一个警告:我不是百分之百肯定这会起作用。在最后一步之前的每一步都应该,我认为最后一步也应该,但如果没有任何测试,很难知道


此外,如您所见,我们有效地将8行直接代码转换为4行相对复杂的代码。我不确定是否值得进行折衷,除非您有大量数据,否则您需要使用新数据频繁重复此过程。

看起来您可能正在寻找类似FunctionTools.reduceoperator.ad的东西d、 itertools.product[X,Y,Z]中a,n的QubitOperatorf'{a}{n}', range10@alaniwifunctools.reduceoperator.add,…->sum..。@juanpa.arrivillaga事实上不,我坚持我的原话:sum只在我们知道值是数字的情况下起作用。只是用字符串连接尝试过。@juanpa.arrivillaga字符串连接只是一个例子。只是用一个具有u add_u_u方法的自定义类尝试过,它就起作用了使用reduceadd,…但不使用sum…是的,您只需要提供一个合适的起始值,例如sumlist_of_custom_对象,foodreducelambda x,y:x+y,…->sum…或只是一个for循环。我不确定我是否建议在这里使用sum,因为它令人困惑,而且正如其他评论员所指出的,它在某些情况下可能不起作用。因为我不知道它在这种情况下是否有效,我选择不修改答案。至于for循环,这可能有效,但在这种情况下我更喜欢reduce而不是reduce。sum…如何比reduce…更容易混淆?因为sum意味着添加数字。我真的不知道还有什么要说。这对我来说更容易混淆,因此,我选择不包括它。请随意创建您自己的答案。@t德莱尼:不,不是。
phi = (QubitOperator('X0') + 
       QubitOperator('Y0') +
       QubitOperator('Z0') + 
       QubitOperator('X1') +
       QubitOperator('Y1') +
       QubitOperator('Z1') )