小编Man*_*gra的帖子

如何在满足特定条件的字符串列表中添加子字符串?

假设我有一个像这样的字符串列表:

['001+11', '010+10', '011+01', '100+11']
Run Code Online (Sandbox Code Playgroud)

我想得到这个:

['0*0*1+1*1', '0*1*0+1*0', '0*1*1+0*1', '1*0*0+1*1']
Run Code Online (Sandbox Code Playgroud)

我知道这里的条件是,每当有 0 或 1 时,我们必须用数字+“*”替换数字,但当数字的下一个元素是“+”时不要这样做。所以我写了一个 python 代码如下-

binary=["0","1"]
for string in out:#out is the list of strings
    for i in range(len(string)):
        if string[i] in binary:
            out[out.index(string)]=change(string,string[i],string[i]+"*")
            break
print out
Run Code Online (Sandbox Code Playgroud)

这使输出为-

['0*01+01', '0*00+01', '0*11+00', '0*10+00', '1*01+11', '1*00+11', '1*11+10', '1*10+10']
Run Code Online (Sandbox Code Playgroud)

所以,我意识到如果我多次运行“while 循环”,我会得到我想要的(while 循环,因为我们必须提到“for 循环”中循环重复的次数,这里不是一个选择)。但是我无法弄清楚 while 的条件应该是什么。很多这一切听起来有点复杂,所以我想,也许还有其他方法可以实现我想要的东西。因此,问题。

注意--这是一个更大的程序的一部分,用于从任何不是用 Python 格式编写的布尔表达式中获取真值表。如果这部分解决了,其余部分可能可以使用 eval 解决。提前谢谢!

EDIT1--change 是用户定义的函数,它更改较大字符串的子字符串。

def change(string,old,new):
    pos=string.index(old)
    return string[:pos]+new+string[pos+1:]
Run Code Online (Sandbox Code Playgroud)

python string loops python-2.7 boolean-algebra

1
推荐指数
1
解决办法
67
查看次数

标签 统计

boolean-algebra ×1

loops ×1

python ×1

python-2.7 ×1

string ×1