Python 2.6 で、それぞれ同じサイズの整数の 2 つのリストを比較しようとしています。必要な比較は、リスト 1 の最初の項目とリスト 2 の最初の項目、リスト 1 の 2 番目の項目とリスト 2 の 2 番目の項目などを比較し、すべてのリスト項目が続く場合に結果を返すことです。比較基準は同じ。次のように動作する必要があります。
list1 = [1,1,1,1]
list2 = [2,1,2,3]
compare(list1,list2)
# returns a "list 1 is <= list 2" response.
list1 = [4,1,4,3]
list2 = [2,1,2,3]
compare(list1,list2)
# returns a "list 1 is >= list 2" response.
list1 = [3,2,3,2]
list2 = [1,4,1,4]
compare(list1,list2)
# returns None— some items in list1 > list2, and some items in list2 > list1.
次のブロックのようなコードを書くことができると考えましたが、それが最も効率的かどうかはわかりません。私のプログラムはこのメソッドをたくさん呼び出すので、できるだけ合理化したいと考えています。
def compare(list1,list2):
gt_found = 0
lt_found = 0
for x in range(len(list1)):
if list1[x] > list2[x]:
gt_found += 1
elif list1[x] < list2[x]:
lt_found += 1
if gt_found > 0 and lt_found > 0:
return None #(some items >, some items <)
if gt_found > 0:
return 1 #(list1 >= list2)
if lt_found > 0:
return -1 #(list1 <= list2)
return 0 #(list1 == list2)
それはすでに得られるのと同じくらい良いですか(nのbig-O)、またはそれを行うためのより高速な方法(または代わりにシステム関数を使用する方法)はありますか?
明確化: 「None」を返すケースが最も頻繁に発生すると予想されるため、これは重要です。