2015-04-02 168 views
2

我試圖用以下語句:如何在Python中將if語句與數組一起使用?

if any(dy) < 0: 

    print 'do something' 

我可以在陣列中看到,有一個很多元素<然後0,但仍然好像程序沒有無法讀取它們並執行打印命令。我想這是因爲dy是一個數組。 我該如何解決這個問題?

+2

在*普通的Python *'任何()'是一個內置函數返回一個真或假的布爾值,並且該值從不小於'0'。但考慮到你使用'array'這個詞,這裏讓我想知道你是否在使用'numpy',它也帶有['any()'函數](http://docs.scipy.org/ DOC/numpy的/參照/生成/ numpy.any.html)。你在使用哪一個? – 2015-04-02 16:35:03

+0

這是一個python數組還是一個numpy數組? – 2015-04-02 16:57:54

+0

這是一個numpy數組 – Anti 2015-04-02 17:16:18

回答

4

使用:

if any(i < 0 for i in dy): 
    print 'do something' 

i < 0 for i in dy部分是一個發生器,當遍歷如果有值dy小於0,這將產生一些True值。然後將any函數在發生器迭代,並返回True如果遇到任何True S IN的發電機輸出,這意味着有一個值(S)小於0 dy。在你現在這樣,any將返回True,這相當於1或False,這相當於0,這兩者是不小於0,所以永遠不會執行你的print

+0

如果你解釋爲什麼應該這樣使用它會很有幫助。 – 2015-04-02 16:41:39

+0

@MartijnPieters我試圖做到如下。否則,我不會發布。 – 2015-04-02 16:43:01

+0

謝謝,是的。而且它從來沒有爲OP工作的原因是因爲any(dy)返回True(== 1)或False(== 0)。這永遠不會小於0. – 2015-04-02 16:46:12

0

any功能簡單地測試是否有在通過表達單個真值:

any(i < 0 for i in dy) # need to use a generator or list comprehension