0

このコードを変更する方法を見つけようとしています。ターゲット値が表示される回数を数える代わりに、ターゲット値より大きいリスト内の値の数を返すことができるようにしたいと考えています。

def countTarget2(myList, target):
    counter = 0
    for element in myList:
        if element == target:
            counter = counter + 1
    return counter

5行目も変えますか?

counter > counter + 1
4

5 に答える 5

4

変更はかなり簡単です。

if element > target:  # if the element is greater than the target

これに続く行を適切にインデントすることを忘れないでください。

この関数を作成する最もPythonicsum()な方法は、次を使用することです。

def countTarget2(myList, target):
    return sum(1 for element in myList if element > target)
于 2013-09-10T23:14:49.003 に答える
2

いいえ、あなたは変わるだけですline 4

def countTarget2(myList, target):
    counter = 0
    for element in myList:
        if element > target:
            counter = counter + 1
    return counter

ifステートメントにはインデントが必要であることに注意してくださいline 5

于 2013-09-10T23:14:37.383 に答える
2

4 行目を次のように変更しif element > target:ます。

def countTarget2(myList, target):
    counter = 0
    for element in myList:
        if element > target:
            counter += 1
    return counter

または、より機能的なものを使用します (ただし、初心者にとってはおそらく理解しにくいでしょう):

def countTarget2(myList, target):
    return len(x for x in myList if x < target)

PS私もcounter = counter + 1見栄えの良いものに変更しましたcounter += 1

于 2013-09-10T23:14:55.697 に答える
2

リスト内包表記アプローチを使用できます。

def countTarget2(myList, target):
    return len([element for element in myList if element > target])

print countTarget2([1,2,3,4], 2)  # prints 2

更新:

これは実際には次の短い形式です。

def countTarget2(myList, target):
    l = []
    for element in myList:
        if element > target:
             l.append(element)
    return len(l)

したがって、はい、中間リストがあります - ジェネレーター式がより良い選択です。

于 2013-09-10T23:14:03.693 に答える
1

いいえ、この場合、等価性テストをより大きいテストに変更しています。

現在、すべての等価でelement == target(適切にインデントされた) 行を実行するテストを行っています。counter = counter+1

以上のテストを行うには、テストを に変更する必要がありますelement > target

コードは次のようになります。

def countTarget2(myList, target):
    counter = 0
    for element in myList:
        if element == target:
            counter = counter + 1 # properly indented, dont forget this!
    return counter
于 2013-09-10T23:15:35.013 に答える