擅长:python、mysql、java
<p>我想一个简单的方法是把第一个操作数取出来,然后按两个循环遍历这个列表。别忘了,您必须将值从字符串转换为整数,否则5+2将是52而不是7:</p>
<pre><code>data = ["5","+","2","-","3","+","2"]
result = int(data[0])
for op, n in zip(data[1:][::2], data[1:][1::2]):
if op == '+':
result += int(n)
if op == '-':
result -= int(n)
print(result)
</code></pre>
<p>核心思想是for循环。它通过使用切片工作:</p>
<ul>
<li><code>data[1:]</code>这是您的初始列表,减去第一个元素(我们已经使用过)</li>
<li><code>[::2]</code>表示“其他元素”</li>
<li><code>[1::2]</code>表示“每隔一个元素,但跳过第一个”</li>
</ul>
<p>我们<code>zip()</code>使用两个列表来获得一对运算符和操作数,如下所示:</p>
<pre><code>>>> for a in zip(data[1:][::2],data[1:][1::2]):
... print(a)
...
('+', '2')
('-', '3')
('+', '2')
</code></pre>
<p>这是一种在列表中循环的安全方法,因为我们不必担心循环超出列表的末尾。你知道吗</p>
<p>其余的逻辑与您的相同,只是您忘记了将值转换为整数。你知道吗</p>