作者ptthidebear (= =)
看板Python
標題[問題] 一次比對list內所有值的方法?
時間Thu Mar 10 11:36:00 2011
各位板上的先進大家好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