相关疑难解决方法(0)

Python的任何和所有功能如何工作?

我想了解如何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

199
推荐指数
6
解决办法
26万
查看次数

逻辑测试4中的3个是真的

True当且仅当4个布尔值中的3个为真时,我想返回.

我最接近的是(x ^ y) ^ (a ^ b):

我该怎么办?

boolean-logic

163
推荐指数
21
解决办法
9962
查看次数

"如果a或b或c但不是全部"的Python语法

我有一个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)

python if-statement

128
推荐指数
10
解决办法
19万
查看次数

检查是否只设置了变量列表中的一个变量

我正在寻找一种简单的方法来检查变量列表中是否只有一个变量具有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)

python xor

14
推荐指数
3
解决办法
5495
查看次数

用不同单位(KB、MB、GB)表示的值进行计算

我正在 Excel 中寻找一种简单的方法来计算不同值的单位。我有几个值的列表KBMBGB我想在一个计算的输出GB

这是列表的一部分:

66.0 MB
570 KB
1.10 GB
2.21 KB
Run Code Online (Sandbox Code Playgroud)

输出: ???GB。

所有值都在同一行 (C) 中,值后面有 B/KB/MB/GB。

excel excel-formula array-formulas excel-2013

5
推荐指数
1
解决办法
2万
查看次数

如何检查iterable中只有一个值是否解析为True?

是否有一种优雅,可读的方式来检查迭代中的所有元素是否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 expression list

3
推荐指数
2
解决办法
452
查看次数

如何实现像Python的any()和all()一样的one()

我喜欢在 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的方式,不是吗?

python

-1
推荐指数
2
解决办法
102
查看次数