看板 Python 關於我們 聯絡資訊
各位板上的先進大家好Orz 小弟最近在學python 語言 剛好碰到一個情況是 要在if的判斷句裡面去判斷list內所有的值是不是等於1 不過list內的個數可能會有變動 所以不能一個一個打出來比較 想請教各位板上的大大們 有沒有方法是可以在if判斷句內直接判斷list內值是不是等於某值的情況呢? 還是就只能另外寫一個function去判斷XD? 非常感謝各位大大們!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.105.206
amulet5566:if 1 in List: pass 03/10 11:42
amulet5566:看錯題意了 抱歉 03/10 11:43
amulet5566:for i in List: if i != 1: print('QQ') 請自行換行 03/10 11:45
ptthidebear:我是想要在一行判斷式內解決,因為有全1與非全1的情況 03/10 12:35
juiz:import numpy as np; if (np.array(lst)==val).all(): blah 03/10 12:40
Holocaust123:if ( set(li) == set([1]) ): print 'all 1' 03/10 13:18
Holocaust123:if(len(filter(lambda x:x!=1, li) )==0): #all 1 03/10 13:21
Holocaust123:if(len([e for e in li if e!=1]==0)): #all 1 03/10 13:25
ptthidebear:感謝大大們提供的方式!!! 03/10 16:14
感謝樓上大大們提供的方式!!! 小弟還有一個問題是 假設list內是有分 [A, B, C, D] 我也是要一行內做判斷是不是都是1 只是判斷的不是A B C D 而是 A.status, B.status, C.status 和 D.status 這個要怎麼辦呢~"~? 該不會 if(len[e.status for e in list if e!=1]==0) 就好了吧XD? 感謝大大們的解答Orz ※ 編輯: ptthidebear 來自: 140.123.105.206 (03/10 16:20)
KSJ:不是… 03/10 17:52
KSJ:可參考 #1AuvTBRi 最後應該是 if e.status != 1 前面則沒差 03/10 17:56
ptthidebear:我耍蠢...Orz 謝謝KSJ大大! 03/11 08:48
tan2:if all(alist == 1): ... (since python 2.5) 03/12 11:34
tan2:if all(e.status==1 for e in alist): ... 03/12 11:37
Holocaust123:樓樓上應該是"if(all(i==1 for i in alist)):"吧? 03/12 22:18
Holocaust123:all()裡面的必須是iterable, alist==1並不是iterable 03/12 22:19
tan2:XD... 多謝樓上指正,我是numpy用太習慣了 03/15 08:42
apua:雖然方法不少,但就題意來說,用all是比較直覺且可讀 03/17 13:26
opiumeater:if all(li)==1:print 'all 1' 03/24 23:06