2017-10-01 6 views
0

同じ長さではない文字列s1とs2を指定すると、s1とs2の交互の文字からなる新しい文字列を作成します(つまり、s1の最初の文字が続くs2の最初の文字、s1の2番目の文字、s2の2番目の文字などが続きます。文字列の終わりに達すると、追加の文字は追加されません。たとえば、s1に "abc uvwxyzを "とs2が含まれている『『aubvcw』、そして新しい文字列が含まれている必要があります』変数S3に新しい文字列を割り当てますPython:min()を使って結果を得る方法

私はこのように試してみましたが、それは私にエラーを与え続けて:。。

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

たとえば、s1は​​、s2は"uvwxyz"です。 s3は"aubvcw"となります。

+1

「join.min」は何ですか? – user2357112

答えて

1

私は2つの解決策を提示します。 ...

は、各文字列の長さを計算し、最も短い長さをキャプチャするためにmin()を使用min()

In [26]: s3 = '' 

を使用していないmin()機能と1を使用して一つ。

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

range()機能でshortを使用することにより、我々は...最短文字列の文字数に反復回数を制限

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

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

min()

可能性を使用しなくてもすることができますmin()を使用しないソリューションは、zip()関数と文字列メソッドjoin()を利用することです。

zipは、各入力から要素を1つずつペアにし、デフォルトでは最短入力の終わりに達するとペアの作成を停止します)。この場合

In [18]: s1 = 'abc' 

In [19]: s2 = 'uvwxyz' 

zip()は、このように見える対の配列、生成されます: ( 'A'、 'U') ( 'B'、 'V') ( 'C' を、 'w')

以下の方法は、各ペアの各要素を空の文字列で結合します。これにより、一連の有向グラフ('au','bv''cw')が生成されます。

外側の''.join()メソッドは、各有向グラフを空の文字列と結合します。

In [22]: ''.join(''.join(pair) for pair in zip(s1, s2)) 
Out[22]: 'aubvcw' 
関連する問題