2017-08-22 6 views
0

複数の値にリストにメンバーシップがあるかどうかをテストしたいが、スクリプトは本当に遅いです。 私がこれまで試したどのような:メンバーシップで複数の値をチェックする方が速い

list1 = [10,20,35,45,67,88,99] 

for x in list1: 
    if 9<x<11: 
     for x in list1: 
      if 34<x<39: 
       for x in list1: 
        if 87<x<90: 
         print "YEAH" 
+0

これは、必要以上に多くの作業を行うため、時間がかかります。あなたはあなたがそれから望んでいたものをはっきりと得たときにあなたの 'foreach'サイクルを破るべきです。 [there](https://docs.python.org/2/tutorial/controlflow.html#break-and-continue-statements-and-else-clauses-on-loops) –

+0

を参照してください。構文?なぜなら、私がループを壊すと、もう動作しなくなるからです。 –

答えて

0

一般的な考え方は、すべての条件が満たされたら、反復を終了することです。

それを解決するにはより洗練された方法があるかもしれませんが、すべての条件の結果を追跡し、すべてがTrueであるとすぐに破棄することが最も簡単です。例:

list = [10, 20, 35, 45, 67, 88, 99, 0] 
// there we will keep track of each test 
cond1 = False 
cond2 = False 
cond3 = False 

// Each of the conds will become True and will keep that value. 
for x in list: 
    cond1 = cond1 or (9 < x < 11) 
    cond2 = cond2 or (34 < x < 39) 
    cond3 = cond3 or (87 < x < 90) 

    if cond1 and cond2 and cond3: 
    // once all of them become True, we know what we want and can break the loop 
    print "YEAH" 
    break 
+0

これは完璧に動作します!ありがとうございました! –

+0

@エリックポール、それでは答えを受け入れる気がしますか? –

+0

参考: フィードバックありがとうございます!評判が15未満の人の投票が記録されますが、公開されている投稿のスコアは変更されません。 –

関連する問題