あなたは数が3位に常にではありません、リストのリストを取得念の答えは? itertools.chain
はリストのリストを一様化し、filter
は次にmax
関数を使用して最大値が決定されるすべての数値を選択します。 利点は、リスト内の任意の場所で数値が見つかるリストの任意のリストに対しても機能することです。ご例えば
:
resultlist = [['1', '1', 'a', 8.3931], ['1', '2', 'b', 6.3231], ['2', '1', 'c', 9.1931]]
max(filter(lambda x: isinstance(x, (int, long, float)), chain.from_iterable(resultlist)))
#prints 9.1931
もう一つの一般的な例:
myList = [[23, 34, 'a'],['b'],['t', 100]]
max(filter(lambda x: isinstance(x, (int, long, float)), chain.from_iterable(myList)))
#prints 100
はEDIT:
あなたはまた、最大値のインデックスを取得したい場合は、あなたが行うことができます(パドレイクカニンガムアプローチを使って@Padraic Cunninghamアプローチを使用して)次のようになる:
from itertools import chain
import operator
resultlist = [['1', '1', 'a', 8.3931], ['1', '2', 'b', 6.3231], ['2', '1', 'c', 9.1931]]
l = filter(lambda x: isinstance(x, (int, long, float)), chain.from_iterable(resultlist))
# l: [8.3931, 6.3231, 9.1931]
max(enumerate(l), key = operator.itemgetter(1))
#(2, 9.1931)
この手法では、リストごとに1つの数値が正確に存在することを前提としています。数値は、任意の位置にあるリストを使用して
もう一つの例:
from itertools import chain
import operator
myList = [[23, '34', 'a'],['b', 1000],['t', 'xyz', 100]]
l=filter(lambda x: isinstance(x, (int, long, float)), chain.from_iterable(myList))
max(enumerate(l), key = operator.itemgetter(1))
#prints (1, 1000)
あなたは2番目のインデックスに余分な開口部角括弧を持っています。 – bourbaki4481472
@ bourbaki4481472ああ、申し訳ありませんが、そこにいるはずはありませんでした。それは私の質問を書いたときのちょうど間違いだった、それは私の実際のプログラムではない。 – FeatherMarauder