Python中的循环和字符串

2024-10-03 00:32:06 发布

您现在位置:Python中文网/ 问答频道 /正文

给定字符串s1s2,长度不一定相同。创建一个由s1s2交替字符组成的新字符串(即s1的第一个字符后跟s2的第一个字符,然后是s1的第二个字符,然后是s2的第二个字符,依此类推。

一旦到达任一字符串的结尾,较长字符串的其余部分将添加到新字符串的结尾。例如,如果s1包含“abc”,而s2包含“uvwxyz”,则新字符串应包含“aubvcwxyz”。将新字符串与变量s3关联。

我的尝试是:

s3 = '' 
i = 0 
while i < len(s1) and i < len(s2): 
    s3 += s1[i] + s2[i] 
    i += 1 
    if len(s1) > len(s2): 
        s3 += s1[i:] 
    elif len(s2) > len(s1): 
        s3 += s2[i:]

Tags: and字符串lenifs3结尾字符abc
3条回答

您可以使用itertools模块中的izip_longest方法执行此操作,方法如下:

import itertools as it
s3 = ''.join(''.join(item) for item in it.izip_longest(s1,s2,fillvalue=''))

演示:

>>> s1 = 'ABCDEF'
>>> s2 = '123456789'
>>> s3 = ''.join(''.join(item) for item in it.izip_longest(s1,s2,fillvalue=''))
>>> 
>>> s3
'A1B2C3D4E5F6789'

编辑:在避免多个join中:

s3 = ''.join(c for item in it.izip_longest(s1,s2,fillvalue='') for c in item)
s1 = "abcdefg"
s2 = "hijk"
s3 = ""
minLen = min(len(s1), len(s2))
    for x in range(minLen):
    out += s1[x]
    out += s2[x]
out += s1[minLen:]
print out

有几件事要记住。首先,可以将python字符串视为数组,并且可以使用括号访问给定索引处的项。另外,倒数第二行使用拼接,有关更多信息,请参见How can I splice a string?

a = 'abc'
b= 'uxyz'
c=''
t=0

while t<len(a):
    c+=a[t]+b[t]
    t+=1

c+=b[t:]
print(c)

这应该是最起码的,你可以调整一些,所以你从中学习。我建议添加一些条件并将其转换为一个函数,这样s1和s2可以是任意长度,并且仍然有效。~

相关问题 更多 >