2016-09-07 9 views
1

私はコーディングが新しく、文字のシーケンスである 'sl'内のタプルを 'tuple'という新しいタプルに結合するスクリプトを作成しようとしていました。 s 'を文字列として扱います。 sの中で最も長い文字列を表示します。文字列を結合するときにmax()argが空のエラーになる

これは私が思いついた(または短いバージョン)コードです。私はこのコードでは 'S' の最大項目を印刷しようとすると、

MAX()argが

エラー空で返します。

sl = [['m','o','o','n'],['d','a','y'],['h','e','l','l','o']] 
s = [] 

s = (''.join(i) for i in sl) # join the letters inside sl, put them into s 

print(max(s, key=len)) # print longest string inside s 

が、私はまだthroughtをしてね繰り返すことができます。

for i in s: 
    print(i) 

との内部の言葉が印刷されます、私は私でために( '' .join(I)と仮定し

に参加しましたsl)は文字列として正しく結合しません。 's'の中の単語が文字列として結合する方法はありますか?

+2

()を交換してください。 "問題"は、 's'はコンテナオブジェクト(リスト、タプル、セット、ディクショナリ)ではなく、ジェネレータです。代わりに 's = ['' slのiのために.join(i)'(カッコをカッコで置き換える)を実行すると –

+0

'' s 'をジェネレータとして使うこともできます。 key 'は以下のようになります: 'print(max(s、key = lambda x:len(x)))' ' –

答えて

0

それは動作しますが、あなたはOK仕事をした[]

sl = [['m','o','o','n'],['d','a','y'],['h','e','l','l','o']] 

s = [] 

s = [''.join(i) for i in sl] 

print(s) 

print(max(s, key=len)) 
関連する問題