2016-07-15 17 views
1

私はPythonを学んでいて、いくつかの三項演算子を使用しようとしています。私が試してみました3進演算子の中のPythonループ

def array_count9(nums): 
    count = 0 
    for i in nums: 
     if i == 9: 
      count += 1 
    return count 

::私は三元用いて、以下の機能を作成しようとしています

def array_count9(nums): 
    count = 0 
    count += 1 if i == 9 for i in nums else pass 
    return count 

SyntaxErrorを投げた後、周りを見た後、私はthisを発見し、私のコードを変更しました私が信じていたより良い注文:

def array_count9(nums): 
    count = 0 
    count += 1 if i == 9 else pass for i in nums 
    return count 

まだを指しているSyntaxErrorを受信して​​います。私は別の場所でかっこを使ってみました。

これをしようと、私をもたらした、私は周りを見回していると、このような thisthisなどの他の関連するスレッドがある

def array_count9(nums): 
    count = 0 
    count += 1 if i == 9 else count == count for i in nums 
    return count 

私はまた、Googleを検索して他のリソースを試してみたが、私はできませんかなりそれを動作させる。教えて下さい。

おかげ

答えて

1

私は、これはコードを書くための最も慣用的な方法だと思います:

def array_count9(nums): 
    return sum(num == 9 for num in nums) 

しかし、あなたがもし/ else構造を使用したい場合にもこれを行うことができます:

def array_count9(nums): 
    return sum(1 if num == 9 else 0 for num in nums) 
+0

おかげで、これはうまくいきましたが、なぜ私が使ったことがうまくいかないのかまだ分かりません。説明できますか? –

+0

@JakeStokes私は説明する方法がわかりません...私はあなたの試みのすべてが単に構文エラーであったと思いますか? Pythonでのリストの理解は、値の反復子になります...あなたがしようとしていたもののようなものは何もありません。 – smarx

+0

うーん..私は[ここ](http://stackoverflow.com/questions/25319053/python-inline-ifstatement-else-do-nothing)をやってみようとしている人々がいるようだが、私はすることができますそれはうまくいきません。私は何か違うことをしていることを確認できますか? –

1

三項演算子のための青写真は、次のとおりです。

condition_is_true if condition else condition_is_false 
シンタックスエラーが発生

文がcount += 1すなわち

count += 1 if i == 9 else pass for i in nums 

であるcondition_is_trueを評価する必要はありませんので、青写真の仕様を満たしていません。

+0

多くの時間を無駄にした後、なぜそれがうまくいかないのか理解できました。ありがとう@nnja –

0

さて、三元演算子は特定の青写真の外側に何も含めることができないので、例を使用するのはややこしいことでした。あなたがそれを渡そうとしているforループです。

count += 1 if i == 9 for i in nums else pass 

だから、コードの周りいじる後:

def array_count9(nums): 
count = 0 
count += 1 if i == 9 for i in nums else pass 
return count 

私はあなたが三項演算子とループのことを含む作品何かを探していたと確信していました。あなたの目標を念頭に置いて、これが私が思いついたものです。

numss = [3,6,9,10,35] 

def count9(nums): 
    count = 0 
    a = count + 1 
    for i in nums: 
     count = (a if i == 9 else count) #This being the ternary operator 
    return count 

print (count9(numss)) 

希望します。

関連する問題