Python for 循环不从列表中迭代 '0'

标签 python list for-loop iteration

Python for 循环不是从列表中迭代“0”!

我尝试编写代码将输入分隔为数字和字母(或运算符):

g='10+10+20x'

t=[]
for each_g in g:
    t.append(each_g)

lol=[]
a=[]
for each_t in t:
    if each_t.isdigit():
        lol.append(each_t)
        x = t.index(each_t)
        t.pop(x)
    else:
        lol = ''.join(lol)
        a.append(lol)
        a.append(each_t)
        lol=[]
print(a)

期望的输出是:

['10', '+', '10', '+', '20', 'x']

但是它打印

['1', '+', '1', '+', '2', 'x']

相反。

代码是否有任何问题或更好的解决方案可以使其按预期工作?

谢谢。

最佳答案

不要修改您正在迭代的序列。在您可以处理之前,每个 pop 都会向下移动一个字符。

在这种情况下,因为您在完成时没有使用 t,所以根本不需要 pop - 它是多余的。

关于Python for 循环不从列表中迭代 '0',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14637155/

相关文章:

python - 我如何使用 python 中的 g_settings_schema_g​​et_key?

list - 定义谓词 maxlist( List, Max) 使得 Max 是数字列表 List 中的最大数字

linq - C# LINQ 在列表中查找重复项

c - for循环中的变量在同一循环中具有不同的值(C语言)

python - 试图理解一段非常简单的 python 代码 : return [x[0] for x in y] 的行为

c# - 为数组中字符串的每个字母输出 _ (hangman)

python - 在 Pandas 的多列中使用 NaN 值

Python检测Windows 10中的 sleep 模式

python - 在 Python 数据集中按条件过滤

python - 写一个设置方法