2017-02-18 4 views
0

数字がリストの後ろの数字よりも多い回数を見たいと思います。リスト内の数字がその数字よりも多い回数を数えるにはどうすればよいですか?

example = [2, 3, 4, 5, 7, 8, 6, 2, 3, 4, 5] 

def lstCount(lst): 
    counter = 0 
    if lst[0] < lst[1]: 
     counter + 1 
     lstCount(lst[1:]) 
    else: 
     lstCount(lst[1:]) 

    return counter 

lstCount(example) 

これは2になるはずですが、リストインデックスが範囲外です。

+0

最後の要素でlstCount(lst [1:])を呼び出すと、コードではどうなりますか?また、counterはローカルで宣言されます。 –

答えて

0

lstが1要素のみの基本ケースを追加する必要があります。そうでない場合は、lst[1]をチェックすると、存在しない要素をチェックしようとしており、範囲外のエラーが発生する可能性があります。さらにcounter + 1は何もしません。カウンターを使わずに単に値を返すことをお勧めします。

def lstCount(lst): 
    if len(lst) == 1: 
     return 0 
    elif lst[0] > lst[1]: 
     return 1 + lstCount(lst[1:]) 
    return lstCount(lst[1:]) 
4
it = iterator(lst) 
next(it, None) 
count = sum(a > b for a, b in zip(lst, it)) 

あるいは単に

count = sum(a > b for a, b in zip(lst, lst[1:])) 
0

別直溶液: 第n-1個の要素をトラバースし、リスト内の現在および次の要素を比較します。

example = [2, 3, 4, 5, 7, 8, 6, 2, 3, 4, 5] 
count = 0 
for i in range(len(example) - 1):#get size of example then decrease by 1 
    if example[i] < example[i + 1]:#visit element by index 
     count = count + 1 
print count 

Output: 
8 
+0

答えの質を高めるためにコードを説明するテキストを追加してください。 –

+0

私はそれがまっすぐだと思います。最初のn-1要素をインデックスでトラバースし、現在と次の要素を比較するだけです。 –

+0

偉大な、あなたの答えにそれを追加してくださいOPはそれの知識を持っていないと仮定する必要がありますので。あなたの見解では、なぜOPがこれを最初に尋ねたのか考えてみてください。 –

関連する問題