我尝试编写一个for循环函数,它接收两个字符串并返回按照第一个字符串中出现的顺序交集字符。
这是我尝试的代码:
def strIntersection(str1, str2):
for i in str1:
str3 = ''
str3 = str3.join(i for i in str1 if i in str2 not in str3)
return str3
str1 = 'asdfasdfasfd'
str2 = 'qazwsxedc'
strIntersection(str1,str2)
=> 'asdasdasd'
然而,我只希望交集字符仅出现一次,并按照第一个字符串的顺序排列,即“asd”。
有人能帮忙吗?
我在其他论坛上找到了一些类似的问题,但所有解决方案似乎都涉及列表,而我希望我的输出为字符串。
''.join
是惯用法,非常简单。然而,在循环中使用它会失去重点。实际上,OP 代码中的 for 循环是完全无用的;它只是导致真正的工作 -str3 = str3.join(i for i in str1 if i in str2 not in str3)
多次执行,每次得到相同的结果,而且除了最后一次之外,每次都抛弃了结果。 - Karl Knechtelc in s2 and c not in out
取决于到此为止的部分结果,这些结果不可访问(除非通过非常可疑的未记录的内容)。 - Karl Knechtel