1. 程式人生 > >python中的&&及||

python中的&&及||

首先說明一下,在python中是沒有&&及||這兩個運算子的,取而代之的是英文and和or。其他運算子沒有變動。

  接著重點要說明的是python中的a.any(),我之所以會涉及到這個函式,是因為我在設計某個分段數值函式時由於不細心犯的錯誤引起的。a.any(),根據官方解釋:

  Test whether any elements of an array evaluate to True along an axis.

即針對的是一個list,判斷list中的某個元素是否為真,此時只要有一個元素為真,list元素全部輸出。下面一個例子更直觀的做了解釋:

23
#!/usr/bin/python
#coding=utf8
 
importnumpy as np
 
deff(data):
    forval indata:
        ifval <=0.6:
            r1=val*1
            print"this is <= 0.6 numbers", r1
        ifval > 4:
            r1=val*1
            print"this is > 4 numbers ", r1
 
defmain():
    data=np.arange(0.1,5.1,0.5)
    ifnp.any(data > 0.3)andnp.any(data <=1):
        r1=data *1
    printr1
    f(data)
 
if__name__=='__main__':
    main()
  對應的輸出是:
?
1
2
3
4
5
[0.1 0.6  1.1  1.6  2.1  2.6  3.1  3.6  4.1  4.6]
thisis<=0.6 numbers 0.1
thisis<=0.6 numbers 0.6
thisis> 4numbers  4.1
thisis> 4numbers  4.6
  在a.any()中,只要滿足條件,整個list就是true的。而我在分段函式計算時,恰恰使用到了a.any()來判斷list的範圍,在後面的計算中,其實是整個list同時運算然後賦值了,也就將分段函式結果簡化成了某一段的所有值。正確的計算分段函式有兩中策略,要麼像上面的函式f(),要麼將list分段帶入運算。
  這個問題我糾結了一個晚上,最後才發現是a.any()的問題。最開始使用的時候,其真正的用法沒有具體熟悉,同時我也該反省我自己,對python語言掌握的實在太菜了!
  路漫漫其修遠兮,吾將上下而求索~