【问题标题】:for loop is not iterating correctlyfor 循环没有正确迭代
【发布时间】:2022-11-18 05:45:18
【问题描述】:

我试图遍历此列表并附加括号的索引,但它返回了错误的索引。

代码:

t = "(= 2 (+ 4 5))"
a = []
for each in t:
        if (each == '(') or (each == ')'):
            a.append(t.index(each))
        else:
            pass
print(t)
print(a)

结果:

(= 2 (+ 4 5))
[0, 0, 11, 11]

它应该是:

(= 2 (+ 4 5))
[0, 5, 11, 12]

【问题讨论】:

  • list.index()将始终返回第一次出现的索引
  • 不用 foreach 循环,只需使用 for 循环来跟踪您当前正在查看的索引。
  • a = [idx for idx, ch in enumerate(t) if ch in '()']
  • for 循环迭代良好,事实证明某物t中为每个()添加了a

标签: python string list for-loop append


【解决方案1】:

您可以通过使用 enumerate() 直接获取索引来避免通过列表(您有 t.index(each))进行 python 搜索:

t = "(= 2 (+ 4 5))"
a = []
for index,each in enumerate(t):
        if (each == '(') or (each == ')'):
            a.append(index)
        else:
            pass
print(t)
print(a)

按要求输出

【讨论】:

  • 谢谢!它运作良好。
【解决方案2】:

在'if'的条件中,'=='和'('之间有一个空格,你应该删除它。写“if (each =='(') or (each ==')')”而不是“如果(每个=='(')或(每个==')')”。

【讨论】:

    猜你喜欢
    • 2012-08-29
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    相关资源
    最近更新 更多