-5

リストから 0 より大きい最小値を特定しようとしていますが、助けが必要です。

誰かがサンプルコードを提供できますか?

ありがとう

4

3 に答える 3

4

と呼ばれる初期リストが与えられた場合values:

values = [...]
result = min(value for value in values if value > 0)

結果の値は に格納されresultます。ここでは、この場合のメモリ節約のために、リスト内包表記の代わりにフィルターを使用したジェネレーター式を使用します。O(1)

于 2013-07-19T21:15:29.123 に答える
3
def smallest_value_greater_than_0(numbers):
    return min(num for num in numbers if num > 0)

コメントで要求されているように、辞書があり、最小値を持つアイテムのキーと値の両方を返したい場合:

def smallest_value_greater_than_0(numbers):
    value, key = min((v, k) for k, v in numbers.iteritems() if v > 0)
    return key, value

numbs = dict(A=2, B=3, C=0)
key, value = smallest_value_greater_than_0(numbs)     # key="A", value=2

(Python 3.x では、numbers.items()代わりに を使用しnumbers.iteritems()ます。また、Python 3 では、すべてのキーが同じ型でなければならないことに注意してください。)

複数のエントリが同じ値を持つ場合、これは Python のソート順を使用して、最も低いキーを持つエントリを返すことに注意してください。たとえば、A=1、B=3、C=0、D=1 の場合、A=1 が返されますが、D=1 は返されません。一部のキーが数値で他が文字列である場合、または一部が大文字で一部が小文字である場合、予測可能ではありますが、期待した結果が得られない場合があります。

于 2013-07-19T21:15:24.453 に答える
0

ジェネレーターを使用できます:

def smallestPositive(lst):
    return min(x for x in lst if x > 0)
于 2013-07-19T21:15:25.247 に答える