合并两个字符串
a = '---e'
b = 'e---'
for i in a:
c=''
for k in b:
if i == k:
c += i
else:
c += '-'
print(c)
结果:
e---
我想把 a 和 b 合并成 'e--e' 这样的结果。请问可以用 for 循环做到吗?有没有人能帮我修正我的代码或者给我推荐其他的方法?如果可以的话,我更想用 for 循环。
谢谢
更新:
感谢 'poke' 和他对 zip 函数的解释,我想出了一个可以工作的代码:
a = '---e'
b = 'ee-e'
c = ''
for x,y in zip(a,b):
if x != '-':
c += x
else:
c += y
打印(c)
输出:
ee-e
1 个回答
8
一种可能的方法是从第一个字符串中取字符,前提是这个字符不是 -
:
>>> a = '---e'
>>> b = 'e---'
>>> ''.join(x if x != '-' else y for x, y in zip(a, b))
'e--e'
这个方法的工作原理是先把两个字符串“压缩”在一起。这样,每个字符就和另一个字符串中相同位置的字符配对。我们就得到了一个字符对的列表:
>>> list(zip(a, b))
[('-', 'e'), ('-', '-'), ('-', '-'), ('e', '-')]
接着,我们遍历这个列表,把每对中的元素分别称为 x
和 y
。现在我们只需要根据规则选择这两个中的一个。在上面的例子中,我会选择 x
,除非它等于 '-'
:
x if x != '-' else y
最后,把这些单独的字符收集起来,拼接成一个字符串。