python中的&&及||
首先說明一下,在python中是沒有&&及||這兩個(gè)運(yùn)算符的,取而代之的是英文and和or。其他運(yùn)算符沒有變動(dòng)。
? 接著重點(diǎn)要說明的是python中的a.any(),我之所以會(huì)涉及到這個(gè)函數(shù),是因?yàn)槲以谠O(shè)計(jì)某個(gè)分段數(shù)值函數(shù)時(shí)由于不細(xì)心犯的錯(cuò)誤引起的。a.any(),根據(jù)官方解釋:
Test whether any elements of an array evaluate to True along an axis.
即針對(duì)的是一個(gè)list,判斷l(xiāng)ist中的某個(gè)元素是否為真,此時(shí)只要有一個(gè)元素為真,list元素全部輸出。下面一個(gè)例子更直觀的做了解釋:
#!/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()
? 對(duì)應(yīng)的輸出是:
?
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()中,只要滿足條件,整個(gè)list就是true的。而我在分段函數(shù)計(jì)算時(shí),恰恰使用到了a.any()來判斷l(xiāng)ist的范圍,在后面的計(jì)算中,其實(shí)是整個(gè)list同時(shí)運(yùn)算然后賦值了,也就將分段函數(shù)結(jié)果簡化成了某一段的所有值。正確的計(jì)算分段函數(shù)有兩中策略,要么像上面的函數(shù)f(),要么將list分段帶入運(yùn)算。