作者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
1F:→ amulet5566:if 1 in List: pass 03/10 11:42
2F:→ amulet5566:看错题意了 抱歉 03/10 11:43
3F:→ amulet5566:for i in List: if i != 1: print('QQ') 请自行换行 03/10 11:45
4F:→ ptthidebear:我是想要在一行判断式内解决,因为有全1与非全1的情况 03/10 12:35
5F:→ juiz:import numpy as np; if (np.array(lst)==val).all(): blah 03/10 12:40
6F:推 Holocaust123:if ( set(li) == set([1]) ): print 'all 1' 03/10 13:18
7F:→ Holocaust123:if(len(filter(lambda x:x!=1, li) )==0): #all 1 03/10 13:21
8F:→ Holocaust123:if(len([e for e in li if e!=1]==0)): #all 1 03/10 13:25
9F:→ 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)
10F:→ KSJ:不是… 03/10 17:52
11F:→ KSJ:可参考 #1AuvTBRi 最後应该是 if e.status != 1 前面则没差 03/10 17:56
12F:→ ptthidebear:我耍蠢...Orz 谢谢KSJ大大! 03/11 08:48
13F:→ tan2:if all(alist == 1): ... (since python 2.5) 03/12 11:34
14F:→ tan2:if all(e.status==1 for e in alist): ... 03/12 11:37
15F:→ Holocaust123:楼楼上应该是"if(all(i==1 for i in alist)):"吧? 03/12 22:18
16F:→ Holocaust123:all()里面的必须是iterable, alist==1并不是iterable 03/12 22:19
17F:→ tan2:XD... 多谢楼上指正,我是numpy用太习惯了 03/15 08:42
18F:→ apua:虽然方法不少,但就题意来说,用all是比较直觉且可读 03/17 13:26
19F:→ opiumeater:if all(li)==1:print 'all 1' 03/24 23:06