我想了解如何any()与all()Python的内置函数的工作.
我试图比较元组,以便如果任何值不同,那么它将返回True,如果它们都是相同的,它将返回False.他们如何在这种情况下返回[False,False,False]?
d是一个defaultdict(list).
print d['Drd2']
# [[1, 5, 0], [1, 6, 0]]
print list(zip(*d['Drd2']))
# [(1, 1), (5, 6), (0, 0)]
print [any(x) and not all(x) for x in zip(*d['Drd2'])]
# [False, False, False]
Run Code Online (Sandbox Code Playgroud)
据我所知,这应该输出
# [False, True, False]
Run Code Online (Sandbox Code Playgroud)
因为(1,1)是相同的,(5,6)是不同的,并且(0,0)是相同的.
为什么所有元组的评估为False?
我有一个python脚本,可以接收零或三个命令行参数.(它可以在默认行为上运行,也可以需要指定所有三个值.)
什么是理想的语法:
if a and (not b or not c) or b and (not a or not c) or c and (not b or not a):
Run Code Online (Sandbox Code Playgroud)
?
我正在寻找一种简单的方法来检查变量列表中是否只有一个变量具有True值.我已经看过这个逻辑xor帖子,并试图找到一种方法来适应多个变量,只有一个是真的.
例
>>>TrueXor(1,0,0)
True
>>>TrueXor(0,0,1)
True
>>>TrueXor(1,1,0)
False
>>>TrueXor(0,0,0,0,0)
False
Run Code Online (Sandbox Code Playgroud) 我正在 Excel 中寻找一种简单的方法来计算不同值的单位。我有几个值的列表KB,MB和GB我想在一个计算的输出GB。
这是列表的一部分:
66.0 MB
570 KB
1.10 GB
2.21 KB
Run Code Online (Sandbox Code Playgroud)
输出: ???GB。
所有值都在同一行 (C) 中,值后面有 B/KB/MB/GB。
是否有一种优雅,可读的方式来检查迭代中的所有元素是否it解析True(您可以假设所有值都是布尔值,尽管这与我的问题无关)?我提出了:
any(it) and not reduce(lambda x, y: x and y, it)
但是我认为减少使得理解有点混乱加上我觉得它不起作用:
In [1]: a=[True, True, False]
In [7]: any(a) and not reduce(lambda x, y: x and y, a)
Out[7]: True
Run Code Online (Sandbox Code Playgroud)
有更可读的方法吗?
更新:我在上面的表达式中意识到错误.reduce()需要在看到True时停止,而不是继续.
我喜欢在 Python 中使用any()and 。all()但有时我需要一个one().
我想知道列表中是否只有一个True值或条件是.
目前我用这样一个嵌套的丑陋来做到这一点if。
# In real world there could be more then just two elements
istrue = [True, False]
isfalse = [True, 'foobar']
isfalse2 = [False, False]
def one(values):
if values[0] and values[1]:
return False
if not values[0] and not values[1]:
return False
return True
one(istrue) # True
one(isfalse) # False
one(isfalse2) # False
Run Code Online (Sandbox Code Playgroud)
我认为有一种更Pythonic的方式,不是吗?