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