在这里,我们将给大家分享关于两个布尔列表上的PythonAND运算符-如何?的知识,让您更了解python中布尔运算的本质,同时也会涉及到如何更有效地(GCC)如何使用==运算符AND两个布尔值?、P
在这里,我们将给大家分享关于两个布尔列表上的Python AND运算符-如何?的知识,让您更了解python中布尔运算的本质,同时也会涉及到如何更有效地(GCC) 如何使用 == 运算符 AND 两个布尔值?、Python / Numpy:将布尔列表转换为unsigned int、python – 列表上的可链操作、python 学习 03.12:Python 三目运算符(三元运算符)用法详解的内容。
本文目录一览:- 两个布尔列表上的Python AND运算符-如何?(python中布尔运算)
- (GCC) 如何使用 == 运算符 AND 两个布尔值?
- Python / Numpy:将布尔列表转换为unsigned int
- python – 列表上的可链操作
- python 学习 03.12:Python 三目运算符(三元运算符)用法详解
两个布尔列表上的Python AND运算符-如何?(python中布尔运算)
我有两个布尔列表,例如,
x=[True,True,False,False]y=[True,False,True,False]
我想将这些列表与预期的输出一起:
xy=[True,False,False,False]
我以为表达x and y
会起作用,但后来发现它不起作用:事实上,(x and y) != (y and x)
输出x and y
:[True,False,True,False]
输出y and x
:[True,True,False,False]
使用列表推导 确实 具有正确的输出。ew!
xy = [x[i] and y[i] for i in range(len(x)]
请注意,我找不到任何可以告诉我AND运算符的参考,就像我尝试使用x和y一样。但是尝试用Python进行操作很容易。有人可以向我解释发生了x andy
什么吗?
这是一个简单的测试程序:
import randomrandom.seed()n = 10x = [random.random() > 0.5 for i in range(n)]y = [random.random() > 0.5 for i in range(n)]# Next two methods look sensible, but do not worka = x and yz = y and x# Next: apparently only the list comprehension method is correctxy = [x[i] and y[i] for i in range(n)]print ''x : %s''%str(x)print ''y : %s''%str(y)print ''x and y : %s''%str(a)print ''y and x : %s''%str(z)print ''[x and y]: %s''%str(xy)
答案1
小编典典and
只需根据它们的真实值返回第一个或第二个操作数。如果第一个操作数被认为是假,则返回它,否则返回另一个操作数。
名单被认为是 真实的 ,当 不为空 ,那么这两个列表被认为是真实的。它们的内容 在这里不起作用 。
由于两个列表都不为空,因此x and y
只需返回第二个列表对象;仅当x
为空时,才返回:
>>> [True, False] and [''foo'', ''bar''][''foo'', ''bar'']>>> [] and [''foo'', ''bar''][]
请参阅Python文档中的“ 真值测试”
部分:
可以测试任何对象的真值,用在
if
或while
条件中或用作以下布尔运算的操作数。以下值为“假”:[…]
- 任何空序列,例如
''''
,()
,[]
。[…]
所有其他值都被认为是真实的 -因此许多类型的对象总是真实的。
(重点是我的),以及其下方的 布尔运算
部分:
x and y
如果 x 为假,则为 x ,否则为 y这是一个短路运算符,因此,如果第一个参数为,则它仅计算第二个参数
True
。
您确实需要显式测试列表中 包含
的值。如您所见,您可以通过列表理解来做到这一点。您可以使用zip()
函数将其重写以配对值:
[a and b for a, b in zip(x, y)]
(GCC) 如何使用 == 运算符 AND 两个布尔值?
如何解决(GCC) 如何使用 == 运算符 AND 两个布尔值??
所以有一天,我试图用 C 语言中的最少字符来做布尔代数,但我只能在这个阶段陷入困境......
//You need main(){} in every C program. 8 chars: ''m'',''a'',''i'',''n'',''('','')'',''{'',''}''
//You also need to assign things. 1 more char
//no stdio since we don''t need I/O
n; //assigns to 0 aka FALSE
i = n==n; //assigns to 1 aka TRUE;
a = i; m = n; //example booleans
a = (a == n); //assigns a to it''s own logical NOT value
a = (a == m); //assigns a to the Xnor value of a and m
a = (a == m) == n //assigns a to the XOR value of a and m
那么我将如何使用赋值、XOR、NOT 和 Xnor 来执行类似 a = a AND b 或 a = a OR b 的操作?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Python / Numpy:将布尔列表转换为unsigned int
- 什么是最快(或最“ Pythonic”)转换方式
x = [False,False,True,True]
进12
?(如果有这种方法。)
- 如果
x
不是numpy.array
傻瓜呢?有特殊的命令吗?
我有一个大型的n×n布尔数组,其中每个n元素行代表一个高维特征向量的单个低维哈希。(在上面的示例中,n
=4。)我想知道答案,以便尽可能地压缩我的数据。谢谢。
编辑 :谢谢您的答复!使用以下测试代码,
t = 0
for iter in range(500):
B = scipy.signbit(scipy.randn(1000,20))
for b in B:
t0 = time.clock()
# test code here
t1 = time.clock()
t += (t1-t0)
print t
当然,我欢迎任何可能确认或反驳我的数据的独立测试!
编辑
:在下面的答案中,更改int(j)
为j
仍然可以正常运行,但运行速度慢了六倍!然后,如果使用强制转换,则其他答案可能会更快int
。但是我太懒了,无法再次测试所有内容。
编辑
:liori在这里发布了独立测试的结果。
python – 列表上的可链操作
list = [6,4,1,10,8].sort().reverse()
要么
zip([x**2 for x in xrange(5)],[x**3 for x in xrange(5)].reverse()])
但这不起作用,因为列表上的方法不返回原始对象,因此它们不可链接.
我是否必须使用多行来执行此操作,或者我是否可以在python中使用一些很酷的函数编程技巧来实现这一点?
解决方法
sorted()
和
reversed()
.
python 学习 03.12:Python 三目运算符(三元运算符)用法详解
Python 可通过 if 语句来实现三目运算符的功能,因此可以近似地把这种 if 语句当成三目运算符。作为三目运算符的 if 语句的语法格式如下:
True_statements if expression else False_statements
三目运算符的规则是:先对逻辑表达式 expression 求值,如果逻辑表达式返回 True,则执行并返回 True_statements 的值;如果逻辑表达式返回 False,则执行并返回 False_statements 的值。看如下代码:
a = 5
b = 3
st = "a大于b" if a > b else "a不大于b"
# 输出"a大于b"
print(st)
实际上,如果只是为了在控制台输出提示信息,还可以将上面的三目运算符表达式改为如下形式:
# 输出"a大于b"
print("a大于b") if a > b else print("a不大于b")
Python 允许在三目运算符的 True_statements 或 False_statements 中放置多条语句。Python 主要支持以下两种放置方式:
-
多条语句以英文逗号(,)隔开:每条语句都会执行,程序返回多条语句的返回值组成的元组。
-
多条语句以英文分号(;)隔开:每条语句都会执行,程序只返回第一条语句的返回值。
先看第一种情形,使用如下代码:
# 第一个返回值部分使用两条语句,逗号隔开。加上()标识更清晰
st = (print("crazyit"), ''a大于b'' if a > b else "a不大于b")
print(st)
上面程序中 True_statements 为 print ("crazyit"),''a 大于 b'',这两条语句都会执行,程序将会返回这两条语句的返回值组成的元组。由于 print () 函数没有返回值,相当于它的返回值是 None。运行上面代码,将看到如下结果:
crazyit # print("crazyit)打印的内容
(None,''a大于b'') # 打印st的内容
如果将上面语句中的逗号改为分号,将逗号之后的语句改为赋值语句,即写成如下形式:
# 第一个返回值部分使用两条语句,分号隔开
st = print("crazyit"); x = 20 if a > b else "a不大于b"
print(st)
print(x)
此时虽然 True_statements 包含两条语句,但程序只会返回第一条语句 print (”crazyit”) 的返回值,该语句同样返回 None,因此相当于 str 的返回值为 None。运行上面代码,将看到如下结果:
crazyit
None
20
需要指出的是,三目运算符支持嵌套,通过嵌套三目运算符,可以执行更复杂的判断。例如,下面代码需要判断 c、d 两个变量的大小关系:
c = 5
d = 5
# 下面将输出c等于d
print("c大于d") if c > d else (print("c小于d") if c < d else print("c等于d"))
上面代码首先对 c>d 求值,如果该表达式为 True,程序将会执行并返回第一个表达式:print (”c 大于 d”);否则系统将会计算 else 后面的内容:(print ("c 小于 d") if c < d else print ("c 等于 d")),这个表达式又是一个嵌套的三目运算符表达式。注意,进入该表达式时只剩下 “c 小于 d” 或 “c 等于 d” 两种情况,因此该三目运算符再次判断 c<d,如果该表达式为 True,将会输出 “c 小于 d”;否则只剩下 “c 等于 d” 一种情况,自然就输出该字符串了。
我们今天的关于两个布尔列表上的Python AND运算符-如何?和python中布尔运算的分享就到这里,谢谢您的阅读,如果想了解更多关于(GCC) 如何使用 == 运算符 AND 两个布尔值?、Python / Numpy:将布尔列表转换为unsigned int、python – 列表上的可链操作、python 学习 03.12:Python 三目运算符(三元运算符)用法详解的相关信息,可以在本站进行搜索。
本文标签: