銆怭ython銆慳ny() 鎴栬€?or,,鏍囩锛?a hre


鏍囩锛?a href='http://www.byrx.net/so/1/%e5%8d%87%e7%ba%a7%e7%89%88' title='鍗囩骇鐗?>鍗囩骇鐗?/a>

鍓嶈█

鍦ㄦ垜涔嬪墠鐨勬枃绔犱腑鏈塧ny()鍜宎ll()鐨勫姣?any()鍜宎ll()瀵规瘮鍏朵腑浠嬬粛浜?code>any()鍑芥暟鐨勫熀鏈壒鎬?--鍙凯浠e璞′腑鏈変换鎰忎竴涓笉涓篎alse鐨勬椂鍊?杩斿洖True,濡傛灉鍙凯浠e璞′负绌虹殑璇?杩斿洖False

鐢变簬杩欎釜鐗规€э紝鍐冲畾浜?code>any()鍙互鐢ㄥ湪鍒ゆ柇璇彞涓笌 or 涓€杈冮珮涓嬨€傞偅涔堜咯鑰呮湁鍖哄埆鍚楋紵鏄剧劧鏄湁鐨勶紝鎺ヤ笅鏉ュ氨璁╂垜浠缁嗙殑瀵规瘮淇╄€呫€?/p>

妗堜緥

鐜板湪鏈夎繖鏍风殑涓€涓満鏅細鏌愬鏍¤鎷涜仒鑰佸笀锛岃婊¤冻涓€涓嬩换鎰忎竴涓姹傦細

鏈夋暀甯堣祫鏍艰瘉鏈夋暀瀛︾粡楠?/li>鏄笀鑼冧笓涓?/li>

鐜板湪鏈変竴鎵圭敵璇蜂汉锛?/p>

applicants = [    {     "name":"寮犱笁",      "has_degree": False,      "has_experience":True,      "is_professional": False    },    {     "name":"鏉庡洓",      "has_degree": True,      "has_experience":False,      "is_professional": False    },        {     "name":"鐜嬩簩",      "has_degree": False,      "has_experience":False,      "is_professional": False    }]

濡備綍浠庤繖鏍风殑鏁版嵁鍒ゆ柇鐢宠浜烘槸鍚︾鍚堟潯浠跺憿锛?/p>

or

for applicant in applicants:    if applicant.get("has_degree") or applicant.get("has_experience") or applicant.get("is_speical"):        print(f鈥榹applicant["name"]} 绗﹀悎鏉′欢!鈥?

杈撳嚭缁撴灉锛?/p>

寮犱笁 绗﹀悎鏉′欢!鏉庡洓 绗﹀悎鏉′欢!

any

濡傛灉浣跨敤 any() 灏遍渶瑕佸弬鏁版槸鍙凯浠g殑(iterable),涔熷氨鎰忓懗鐫€鎴戜滑闇€瑕佸皢鍙傛暟杞寲涓簂ist銆乼upple绛夈€?/p>

for applicant in applicants:    if any(applicant.get("has_degree"),applicant.get("has_experience"), applicant.get("is_speical")):        print(f鈥榹applicant["name"]} 绗﹀悎鏉′欢!鈥?

鏄剧劧鏈€缁堣緭鍑虹粨鏋滄槸涓€鏍风殑銆?/p>

鍒拌繖閲岋紝鏄笉鏄寰?any() 鍍忓崌绾х増鐨?or ? 閭g┒绔熸槸涓嶆槸杩欐牱瀛愬憿锛熷埆鐫€鎬ュ繕涓嬬湅銆?/p>

璇硶

浼楁墍鍛ㄧ煡 or 鏄竴涓€昏緫杩愮畻绗︼紝鎵€浠ュ畠闇€瑕佷袱涓弬鏁帮細

>>> True or FalseTrue

鑰?any() 鏄竴涓嚱鏁帮紝鍙渶瑕佷竴涓彲杩唬鐨勫弬鏁帮細

>>>any([True,False])True

杩欏氨鎰忓懗鐫€锛屽鏋滃浜庝竴涓彲杩唬鐨勫弬鏁颁娇鐢?code>any()浼氭樉寰楁洿绠€鍗曚竴鏃︼紝濡傛灉浣跨敤or锛屽垯闇€瑕佹垜浠幓閬嶅巻浜嗭細

>>> import functools>>> functools.reduce(lambda x, y: x or y, (True, False, False))True

闄や簡杩欎釜鍖哄埆锛屼咯鑰呰繕鏈変竴涓洿閲嶈鐨勫尯鍒紝姝e父鎯呭喌涓嬪綋浼楀鏉′欢涓嬪嚭鐜颁竴涓?code>True鐨勬椂鍊欙紝鎴戜滑甯屾湜瀵逛綑涓嬬殑鏉′欢涓嶅仛浠讳綍鍒ゆ柇鐩存帴杩斿洖 True锛堣繖绉嶈绉颁綔 鐭矾姹傚€?strong>short-circuit evaluation 鎴栬€?寤惰繜璁$畻lazy evaluation锛?璁╂垜浠湅鐪?or 鍜?any() 鏄惁杩欐牱鍛紵

ef test_a():    print(鈥楢 was called鈥?    return Truedef test_b():    print(鈥楤 was called鈥?    return Falseprint(鈥?==call_or===鈥?a_or_b = test_a() or test_b()print(鈥?==call_any===鈥?a_any_b = any([test_a(),test_b()])

杩愯涓€涓嬬湅涓€涓嬭緭鍑虹粨鏋滐細

===call_or===A was called===call_any===A was calledB was called

浠庣粨鏋滀笉闅惧彂鐜帮紝or 鏄寜鐓ч鏈熻繑鍥炵殑锛岃€?code>any()鍒欎笉鏄€傞偅涔堟湁娌℃湁鍔炴硶璁㏄ython璋冪敤鍑芥暟鐨勬椂鍊欎篃閬靛惊 寤惰繜璁$畻锛坙azy evaluation锛?/strong>鍛紵鏂规硶鏄湁鐨?--閫氳繃map锛堬級鏋勯€犱竴涓敓鎴愬櫒鎴栬€呬娇鐢ㄧ敓鎴愬櫒琛ㄨ揪寮?/strong>锛?/p>

a_any_iterable_b = any((test() for test in [test_a,test_b]))

涓婇潰鐨勪緥瀛愬氨鏄娇鐢?strong>鐢熸垚鍣ㄨ〃杈惧紡锛坓enerator expression锛?/strong>锛屽綋鍏朵腑涓€涓潯浠惰繑鍥炰负True锛屽垯any()灏变細鐩存帴杩斿洖True锛岃€屼笉浼氱户缁牎楠屼綑涓嬬殑鏉′欢銆?/p>

>>> any((1, 0))True

or鍒欎笉鏄繖鏍凤紝瀹冧細鍙戠幇瀹冩壘鍒扮殑绗竴涓竷灏斿€间负True鐨勫厓绱狅紝鍗?code>bool(value)涓?code>True锛岃繑鍥?code>value,鍚﹀垯杩斿洖鏈€鍚庝竴涓厓绱狅細

>>> 1 or 01>>> None or 00

评论关闭