通过连接两个字符串中不包含的字符,从两个给定字符串创建字符串的程序 编写一个Python程序,通过连接两个字符串中不包含的字符,从两个给定字符串创建一个字符串。第一个字符串中的字符应出现在第二个字符串中的字符之前。返回结果字符串。 示例输入:“0abcxyz”、“abcxyz1” 预期产出:“01”

通过连接两个字符串中不包含的字符,从两个给定字符串创建字符串的程序 编写一个Python程序,通过连接两个字符串中不包含的字符,从两个给定字符串创建一个字符串。第一个字符串中的字符应出现在第二个字符串中的字符之前。返回结果字符串。 示例输入:“0abcxyz”、“abcxyz1” 预期产出:“01”,python,Python,我已经得到了结果,但我想知道是否有更好的方法来达到同样的结果。” 上述代码将结果返回为01,即 预期。不过,我想知道是否还有其他办法 无需使用“for循环”即可获得此解决方案 两次。您的反馈将极大地帮助我提高python技能。提前谢谢 试试这个。 @furas指出,在使用set时不需要list(),因此对此进行了更新 var14_1, var14_2 = '0abcxyz', 'abcxyz1' def concat(first, second): return ''.join(set(

我已经得到了结果,但我想知道是否有更好的方法来达到同样的结果。”

上述代码将结果返回为01,即 预期。不过,我想知道是否还有其他办法 无需使用“for循环”即可获得此解决方案 两次。您的反馈将极大地帮助我提高python技能。提前谢谢

试试这个。 @furas指出,在使用set时不需要list(),因此对此进行了更新

var14_1, var14_2 = '0abcxyz', 'abcxyz1'
def concat(first, second):
    return ''.join(set(first).symmetric_difference(set(second)))

print(concat(var14_1, var14_2))
获取一组对象将创建唯一元素的无序集合

set() 

有一个名为symmetric_difference()的函数,它允许您查找两个集合之间的对称差异。

最好不要只在多次运行时使用列表理解。
res.append()


要对循环使用一个
,您可以将字符串转换为集合并获得公共字符

common = set('0abcxyz') & set('abcxyz1')
然后您可以将一个
用于
和串联字符串
var14_1+var14_2

common = set('0abcxyz') & set('abcxyz1')

res = [s for s in var14_1 + var14_2 if s not in common]

print(''.join(res))

使用列表理解来运行
res.append()
看起来不太好。对于
-循环,最好使用普通的
。或者创建一个列表
r1=[s for…]
r2=[s for…]
然后创建一个列表
res=r1+r2
如果变量被交换了怎么办,即
var14_1='abxyz1'和var14_2='0abcxyz'?
这会给出所需的输出吗
10
?如果变量是
'1abcxyz',,则不起作用,“abcxyz0”
应该给出
'10'
,但是通过删除sorted()可以更新
'01'
。这现在应该可以工作了@furasproblem可能更大,因为
set()
不需要保持秩序,当我运行新代码时,有时会得到
{'0','1'}
,但有时它会更新
{'1','0'}
以根据OP请求将集合合并成字符串。如果您遇到同样的问题,请告诉我:)谢谢@furas的回复。真的很感激!
common = set('0abcxyz') & set('abcxyz1')
common = set('0abcxyz') & set('abcxyz1')

res = [s for s in var14_1 + var14_2 if s not in common]

print(''.join(res))