我知道
all(map(compare,new_subjects.values()))==True
Run Code Online (Sandbox Code Playgroud)
会告诉我列表中的每个元素是否为True.但是,如何判断除其中一个元素之外的每个元素是否为True?
Raf*_*ler 11
values = map(compare, new_subjects.values())
len([x for x in values if x]) == len(values) - 1
Run Code Online (Sandbox Code Playgroud)
基本上,您过滤列表中的真值,并将该列表的长度与原始列表进行比较,以查看它是否少一个.
如果你的意思是实际True而不是评估为True,你可以算一下吗?
>>> L1 = [True]*5
>>> L1
[True, True, True, True, True]
>>> L2 = [True]*5 + [False]*2
>>> L2
[True, True, True, True, True, False, False]
>>> L1.count(False)
0
>>> L2.count(False)
2
>>>
Run Code Online (Sandbox Code Playgroud)
只检查一个False:
>>> def there_can_be_only_one(L):
... return L.count(False) == 1
...
>>> there_can_be_only_one(L1)
False
>>> there_can_be_only_one(L2)
False
>>> L3 = [ True, True, False ]
>>> there_can_be_only_one(L3)
True
>>>
Run Code Online (Sandbox Code Playgroud)
编辑:这实际上更好地回答了你的问题:
>>> def there_must_be_only_one(L):
... return L.count(True) == len(L)-1
...
>>> there_must_be_only_one(L3)
True
>>> there_must_be_only_one(L2)
False
>>> there_must_be_only_one(L1)
False
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25616 次 |
| 最近记录: |