【发布时间】:2021-11-28 22:09:33
【问题描述】:
我想从第一个字符串 s1 中删除所有字符,恰好是它们在另一个字符串 s2 中出现的次数,即如果 s1 = "AAABBBCCCCCCD" 和 s2 = "ABBCCC" 那么结果应该是 s = "AABCCCD" . (结果字符串中的字符顺序实际上是无关紧要的,但如果可以保留它是一个加号。)
以下相当粗略的代码可以做到这一点:
def reduce_string(s1, s2):
s = s1
for c in s2:
if c in s:
s = s.replace(c, "", 1)
return(s)
# examples
reduce_string("AAABBBCCCCCCD", "ABBCCC")
reduce_string("AAABBBCCCCCCD", "ABBCCCE")
我的问题是,是否可以通过巧妙地使用某些内置函数或至少以更优雅的方式来实现?感谢您的所有回答!
【问题讨论】:
-
我很乐意尝试回答“为什么问题”:上下文是临床研究中的随机化。例如,字符串 s1 = "AAABBBCCCCCC" 表示 12 个人将被分配到 3 个研究组 A、B 和 C,其中控制组 C 是两个干预组 A 和 B 的两倍。 s1 将被随机排列以生成可能的分配方案。现在,s2 = "ABBCCC" 代表之前分配的一批参与者。然后,我不想置换所有参与者的分配,而是只置换尚未分配的个人。
-
@bad_coder:不,它没有,老实说,我不明白你为什么认为它可能。我的问题到底有什么不清楚的地方?