Python和运算符的实用示例
Python具有针对所有对象的功能。这将启用更通用的定义,适用于所有对象:Python和运算符的实用示例,python,boolean,Python,Boolean,Python具有针对所有对象的功能。这将启用更通用的定义,适用于所有对象: x或y:如果x为false,则为y,否则为x x和y:如果x为假,则为x,否则为y 我见过OR运算符的实际用例,例如: ENV_VAR = os.environ.get(‘ENV_VAR’) or <default_value> # you want to see only odd numbers that are in both lists list1 = [1,5,7,6,4,9,13,519231
:如果x为false,则为y,否则为xx或y
:如果x为假,则为x,否则为yx和y
ENV_VAR = os.environ.get(‘ENV_VAR’) or <default_value>
# you want to see only odd numbers that are in both lists
list1 = [1,5,7,6,4,9,13,519231]
list2 = [55,9,3,20,18,7,519231]
oddNumsInBothLists = [element for element in set(list1) if element in set(list2) and element % 2]
# => oddNumsInBothLists = [7, 9, 519231]
ENV_VAR=os.environ.get('ENV_VAR')或
但是,我没有看到任何使用Python和运算符的实际示例。在这里,我正在寻找利用真值测试的AND运算符的示例,如上面的OR运算符示例。任何时候,只要您需要两件事都应该为真的语句。例如:
ENV_VAR = os.environ.get(‘ENV_VAR’) or <default_value>
# you want to see only odd numbers that are in both lists
list1 = [1,5,7,6,4,9,13,519231]
list2 = [55,9,3,20,18,7,519231]
oddNumsInBothLists = [element for element in set(list1) if element in set(list2) and element % 2]
# => oddNumsInBothLists = [7, 9, 519231]
布尔运算符,尤其是and,通常可以忽略,但以牺牲可读性为代价。当且仅当其所有成员均为true时,内置函数all()
将返回true。类似地,如果函数的任何成员为true,则函数any()
将返回true
shouldBeTrue = [foo() for foo in listOfFunctions]
if all(shouldBeTrue):
print("Success")
else:
print("Fail")
也许一种更简单的思考方式是使用或
代替连续的if语句,而使用和
代替嵌套的if语句
def foobar(foo, bar):
if(foo):
return foo
if(bar):
return bar
return False
在功能上与:
def foobar(foo, bar):
return foo or bar
def foobar(foo, bar):
return foo and bar
以及:
在功能上与:
def foobar(foo, bar):
return foo or bar
def foobar(foo, bar):
return foo and bar
这可以通过一个简单的测试来证明
class Foo:
def __init__(self, name):
self.name = name
test1 = Foo("foo")
test2 = Foo("bar")
print((test1 or test2).name) # => foo
print((test1 and test2).name) # => bar
print((not test1 and not test2).name) # => AttributeError for 'bool' (False)
任何时候你需要一个陈述,其中两件事应该是真实的。例如:
ENV_VAR = os.environ.get(‘ENV_VAR’) or <default_value>
# you want to see only odd numbers that are in both lists
list1 = [1,5,7,6,4,9,13,519231]
list2 = [55,9,3,20,18,7,519231]
oddNumsInBothLists = [element for element in set(list1) if element in set(list2) and element % 2]
# => oddNumsInBothLists = [7, 9, 519231]
布尔运算符,尤其是and,通常可以忽略,但以牺牲可读性为代价。当且仅当其所有成员均为true时,内置函数all()
将返回true。类似地,如果函数的任何成员为true,则函数any()
将返回true
shouldBeTrue = [foo() for foo in listOfFunctions]
if all(shouldBeTrue):
print("Success")
else:
print("Fail")
也许一种更简单的思考方式是使用或
代替连续的if语句,而使用和
代替嵌套的if语句
def foobar(foo, bar):
if(foo):
return foo
if(bar):
return bar
return False
在功能上与:
def foobar(foo, bar):
return foo or bar
def foobar(foo, bar):
return foo and bar
以及:
在功能上与:
def foobar(foo, bar):
return foo or bar
def foobar(foo, bar):
return foo and bar
这可以通过一个简单的测试来证明
class Foo:
def __init__(self, name):
self.name = name
test1 = Foo("foo")
test2 = Foo("bar")
print((test1 or test2).name) # => foo
print((test1 and test2).name) # => bar
print((not test1 and not test2).name) # => AttributeError for 'bool' (False)
到目前为止,
和
在python中最常见的用法就是检查多个条件:
if 13 <= age <= 19 and gender == 'female':
print "it's a teenage girl"
它有一个缺陷:如果x
是0
,None
,'
,或者任何类型的假值,那么将选择y
,因此它与C版本并不完全相同
以下是“固定”版本:
自从python引入了
到目前为止,
和
在python中最常见的用法就是检查多个条件:
if 13 <= age <= 19 and gender == 'female':
print "it's a teenage girl"
它有一个缺陷:如果x
是0
,None
,'
,或者任何类型的假值,那么将选择y
,因此它与C版本并不完全相同
以下是“固定”版本:
自从python引入了
示例中使用的功能
os.environ.get(‘ENV_VAR’) or <default_value>
os.environ.get('ENV_VAR')或
被称为短路评估。如果AND和OR的这一方面是您问题的主题,您可能会发现这篇维基百科文章很有用:
示例中使用的功能
os.environ.get(‘ENV_VAR’) or <default_value>
os.environ.get('ENV_VAR')或
被称为短路评估。如果AND和OR的这一方面是您问题的主题,您可能会发现这篇维基百科文章很有用:
我在这个答案中找到了
和以及或运算符的好例子:
直接引用答案:
Python的或运算符返回第一个Truth-y值或最后一个值,然后停止。这对于需要回退值的常见编程分配非常有用
就像这个简单的例子:
print my_list or "no values"
使用和
进行补充,返回第一个假y值或最后一个值并停止,当您需要保护而不是回退时使用
像这个:
my_list and my_list.pop()
我在这个答案中找到了和以及或运算符的好例子:
直接引用答案:
Python的或运算符返回第一个Truth-y值或最后一个值,然后停止。这对于需要回退值的常见编程分配非常有用
就像这个简单的例子:
print my_list or "no values"
使用和
进行补充,返回第一个假y值或最后一个值并停止,当您需要保护而不是回退时使用
像这个:
my_list and my_list.pop()
当我需要获取一个对象的属性时,我有时会使用和,如果该对象不是None
,否则获取None
:
>>> import re
>>> match = re.search(r'\w(\d+)', 'test123')
>>> number = match and match.group(1)
>>> number
>>> '123'
>>> match = re.search(r'\w(\d+)', 'test')
>>> number = match and match.group(1)
>>> number
当我需要获取一个对象的属性时,我有时会使用和,如果该对象不是None
,否则获取None
:
>>> import re
>>> match = re.search(r'\w(\d+)', 'test123')
>>> number = match and match.group(1)
>>> number
>>> '123'
>>> match = re.search(r'\w(\d+)', 'test')
>>> number = match and match.group(1)
>>> number
os.getenv('ENV_VAR',default=default_value)
更好声音更像JavaScript。。。不确定是否有人在Python中使用它。您还没有看到如果condition1和condition2:do_something
?谢谢@wim,是的,它看起来确实比我的更明确。我想到了另一个例子,那就是name=input('enteryourname:')或'Unknown'
。你认为这是一个更好的例子吗?@gill,是的,你的例子绝对正确。然而,我没有看到它与利用真值测试的相关性。你能说得更具体些吗?我应该更具体地说,我希望看到在Java中不可能出现的示例。os.getenv('ENV_VAR',default=default_value)
更好声音更像JavaScript。。。不确定是否有人在Python中使用它。您还没有看到如果condition1和condition2:do_something
?谢谢@wim,是的,它看起来确实比我的更明确。我想到了另一个例子,那就是name