以下のような文字列のリストがあります。
stringList = ["a" , "aa", "aaa", "aaaa", "aaab", "aaac"]
私がやろうとしているのは、リスト内のすべての最長の文字列を返すことです。max 関数を使用してみましたが、1 つの値しか返されませんが、この場合、長さ 4 の 3 つの文字列があります。
助けてくれてありがとう!
以下のような文字列のリストがあります。
stringList = ["a" , "aa", "aaa", "aaaa", "aaab", "aaac"]
私がやろうとしているのは、リスト内のすべての最長の文字列を返すことです。max 関数を使用してみましたが、1 つの値しか返されませんが、この場合、長さ 4 の 3 つの文字列があります。
助けてくれてありがとう!
とを使用list comprehension
しmax
ます。
>>> lis= ["a" , "aa", "aaa", "aaaa", "aaab", "aaac"]
>>> le = max(len(x) for x in lis) #find out the max length
>>> [x for x in lis if len(x) == le] #now filter list based on that max length
['aaaa', 'aaab', 'aaac']
このようなものかもしれません:
longest_len = 0
longest_strings = []
for s in stringList:
if len(s) > longest_len:
longest_len = len(s)
longest_strings = [s]
elif len(s) == longest_len:
longest_strings.append(s)
単一のリスト内包表記 (リストは何度も処理されますが):
[s for s in stringList if len(s) == len(max(stringList, key=len))]
Python v2.5 以降、min() と max() にはオプションの引数 key があり、比較方法を指定できます。