Python:如何使用min()获得结果

时间:2017-10-01 04:55:51

标签: python

给定字符串s1和s2,不一定长度相同,创建一个由s1和s2的交替字符组成的新字符串(即s1的第一个字符后跟s2的第一个字符,后跟第二个字符s1的字符,后跟s2的第二个字符,依此类推。一旦到达任一字符串的末尾,就不会添加其他字符。例如,如果s1包含" abc" s2包含&# 34; uvwxyz",那么新字符串应包含" aubvcw"。将新字符串分配给变量s3。

我试过这样但是它一直给我一个错误:

s3 = ""
for i in range(len(s1)):
    s3 += s1[i] + s2[i]
    join.min(s1,s2)

例如,s1是"abc",s2是"uvwxyz"。 s3应该是"aubvcw"

1 个答案:

答案 0 :(得分:1)

我提出两种解决方案。一个使用min()函数,另一个不使用...

使用min()

In [26]: s3 = ''

计算每个字符串的长度,并使用min()来捕获最短的字符串。

In [27]: short = min(len(s1), len(s2))

short函数中使用range(),我们可以将迭代次数限制为最短字符串中的字符数...

In [28]: for i in range(short):
    ...:     s3 += s1[i] + s2[i]
    ...:

In [29]: s3
Out[29]: 'aubvcw'

不使用min()

不使用min()的可能解决方案是利用zip()函数和字符串方法join()

来自每个输入的zip函数对元素,并且默认情况下,当它到达最短输入的末尾时停止创建对。)

In [18]: s1 = 'abc'

In [19]: s2 = 'uvwxyz'

在这种情况下,zip()将产生一系列对,如下所示: (' a',' u') (' b',' v') (' c',' w')

下面的内部''.join()方法将每对中的每个元素与一个空字符串组合在一起。这将产生一系列有向图:'au''bv''cw'

外部''.join()方法然后将每个有向图与空字符串组合在一起。

In [22]: ''.join(''.join(pair) for pair in zip(s1, s2))
Out[22]: 'aubvcw'