1

私はPythonでコーディングすることを学んでいます。私の最初の自己割り当て割り当ては、Dijkstra のアルゴリズムです。make_graph してデータを入力することはできましたが、SSSP(source) の決定に行き詰まっています。

min(list,key=func())最も価値の低いアイテムを取得するために使用しようとしています。"key=func()": 最小値の同じインデックスを持つ別のリストには、「まだ反復されていない」値が必要です

現在のリスト アイテムを渡す方法。キー Fund() に反復されて、check_list に "not Iterated yet" として対応する値があることを確認します。key=True の場合、最小値は返されますか?

func() がブール値を返す場合の key=func() の動作

4

1 に答える 1

6

を使用するだけで、次funcをドロップし()ます。

min(list,key=func)

例:

>>> lis = [ '1', '2', '3', '4' ]
>>> def func(x):
...     return int(x)
... 
>>> min(lis, key=func) # each value from list is passed to `func`(one at a time)
'1'

PythonTrueでは に等しい1、およびFalseに等しい0、したがって、func()ブール値を返す場合、実際にはmin関数は と だけ1を比較し0ます。

>>> True == 1
True
>>> False == 0
True

例:

>>> def func(x): return bool(x)
>>> lis = [ 1, [], 3, 4 ]
>>> min(lis, key=func) # bool([]) evaluated to False, ie 0
[]
>>> max(lis, key=func)
1

もう一つの例:

>>> lis  = [[4,5,6], [1,2], [13,1,1,1], [1000]]
>>> def func(x):
...     return len(x)  #comparisons are done based on this value
... 
>>> min(lis, key = func)
[1000]
#equal to
>>> min(lis, key = len)
[1000]
于 2013-06-17T08:12:06.980 に答える