2016-03-30 11 views
1

これは私のこのプログラムのバージョンです。これを行うためのより簡単で簡単な方法はありますか?txtファイルの最長単語のpythonコードですか?

d = open('txt.txt','r') 
l = d.readlines() 
string = l[0] 
stringsplit = string.split() 

d = [] 
for i in stringsplit: 
    d.append(len(i)) 
    e = max(d) 
for j in stringsplit: 
    if len(j) == e: 
     print("The longest word is", j, "and it is", len(j),"characters long") 
+2

どのようにして、テキストファイル全体で最も長い単語が見つかりますか?テキストファイルの最初の行である 'l [0]'だけでなく、私が間違っているなら、私を訂正してください。また、これを手動で行う場合は、配列内の 'max'を見つける前に' d.append(len(i)) 'を実行する必要はありません。 'maxLen = 0'で始まり、' len(i)> maxLen'、 'maxLen = len(i)'、 'e = i'から始めることができます。 ( 'stringsplit'を2回叩く必要はありません。) – Tacocat

答えて

1

リスト内包表記を使用して、入力を単一のリストにしてから、結果のリストでreduceを使用して最長の文字列を見つけることができます。

f = open("input.txt", "r") 
s = [y for x in f.readlines() for y in x.split()] 
longest = reduce(lambda x, y: y if len(x) < len(y) else x, s, "") 
print("The longest word is", longest, "and it is", len(longest),"characters long") 
0

あなたはmax()組み込み関数を使用することができます:それはstringsplitは、ファイルの最初の一行だけで単語のリスト、ではないこと、しかし、注目に値する

longest = max(stringsplit, key=len) 
print("The longest word is {} and it is {} characters long".format(longest, len(longest))) 

をファイル自体全体。 stringsplit = d.read().split()

関連する問題