C和许多其他语言都有条件(也称为三元)运算符.这允许您根据条件的真实性在两个值之间做出非常简洁的选择,这使得表达式(包括赋值)非常简洁.
我想念这个,因为我发现我的代码有很多条件赋值,在Python中占用四行:
if condition:
var = something
else:
var = something_else
Run Code Online (Sandbox Code Playgroud)
而在C中它是:
var = condition? something: something_else;
Run Code Online (Sandbox Code Playgroud)
文件中的一次或两次没问题,但是如果你有很多条件分配,那么线条的数量就会爆炸,最糟糕的是,眼睛会吸引它们.
我喜欢条件运算符的简洁性,因为它在我浏览代码时会让我认为没有战略意义的东西分散注意力.
那么,在Python中,有没有什么技巧可以用来将赋值放到一行上来近似条件运算符的优点,正如我所概述的那样?
你知道Python是否支持像C++中的某些关键字或表达式来返回基于if条件的值,所有这些都在同一行(if用问号表示的C++ ?)
// C++
value = ( a > 10 ? b : c )
Run Code Online (Sandbox Code Playgroud) 我一直在用Python编写基于文本的游戏,我遇到过一个实例,我希望根据一组条件对字符串进行不同的格式化.
具体来说,我想显示描述房间内物品的文字.我希望在房间的描述中显示这个,当且仅当有问题的物品对象位于房间对象的物品清单中时.它的设置方式,我觉得简单地连接基于条件的字符串将不会按我的意愿输出,并且最好为每种情况设置不同的字符串.
我的问题是,是否有基于布尔条件结果格式化字符串的pythonic方法?我可以使用for循环结构,但我想知道是否有更简单的东西,类似于生成器表达式.
我正在寻找类似于此的东西,以字符串形式
num = [x for x in xrange(1,100) if x % 10 == 0]
Run Code Online (Sandbox Code Playgroud)
作为我的意思的一般例子:
print "At least, that's what %s told me." %("he" if gender == "male", else: "she")
Run Code Online (Sandbox Code Playgroud)
我意识到这个例子不是有效的Python,但它总体上显示了我正在寻找的东西.我想知道布尔字符串格式是否有任何有效的表达式,类似于上面的.在搜索了一下之后,我无法找到任何与条件字符串格式有关的内容.我确实在格式字符串上找到了几个帖子,但这不是我想要的.
如果确实存在类似的东西,那将非常有用.我也对可能提出的任何替代方法持开放态度.提前感谢您提供的任何帮助.
如果以前曾经问过这个问题,我会道歉,但我无法在任何地方看到它.
基本上我遇到过一个场景,我需要在lambda函数中使用if语句.困难之处在于理想情况下它需要在一行代码中(如果可能的话甚至可能?)
通常,我会这样写:
T = 250
if (T > 200):
rate = 200*exp(-T)
else:
rate = 400*exp(-T)
return (rate)
Run Code Online (Sandbox Code Playgroud)
但是我需要它看起来像这样:
rate = lambda(T) : if (T>200): return(200*exp(-T)); else: return(400*exp(-T))
Run Code Online (Sandbox Code Playgroud)
我意识到更容易做的事情是在lambda函数之外做出决策,然后为每个case都有一个单独的lambda函数,但它不适合这里.lambda函数存储在一个数组中,并在需要时访问,每个数组元素对应一个特定的"速率",因此对于相同的"速率"有两个单独的行会弄乱.任何帮助将不胜感激,或如果它不可能,其他人的一些确认将是不错的:)
python lambda if-statement ternary-operator conditional-operator
这是非常基本的,但我编码并开始想知道是否有一种pythonic方法来检查是否存在某些东西.这是我如何做到的,如果它是真的:
var = 1
if var:
print 'it exists'
Run Code Online (Sandbox Code Playgroud)
但是当我检查是否存在某些东西时,我经常这样做:
var = 2
if var:
print 'it exists'
else:
print 'nope it does not'
Run Code Online (Sandbox Code Playgroud)
如果我所关心的只是一种浪费,似乎是一种浪费,如果没有其他东西,有没有办法检查是否存在某些东西?
可能重复:
Python中的三元条件运算符
var foo = (test) ? "True" : "False";
Run Code Online (Sandbox Code Playgroud)
这在Python中会是什么样子?
使用Python 2.7,如果这有所作为.
由于True和False是的情况下int,下面的Python中是有效的:
>>> l = [0, 1, 2]
>>> l[False]
0
>>> l[True]
1
Run Code Online (Sandbox Code Playgroud)
我理解为什么会这样.但是,我发现这种行为有点出乎意料,并且可能导致难以调试的错误.它肯定咬过我几次.
谁能想到使用True或者合法使用索引列表False?
可能重复:
Python三元运算符
我想在python中打印出一个字符串.我不想这样做:
if isfemale_bit:
print 'F'
else:
print 'M'
Run Code Online (Sandbox Code Playgroud)
我现在最好的是print ['M', 'F'][int(isfemale_bit)]?
还有更好的选择吗?
我需要我的语法糖!!
我不明白这条线的含义:
parameter and (" " + parameter) or ""
Run Code Online (Sandbox Code Playgroud)
其中parameter是string
为什么人们想要使用and和or运算符,一般来说,使用python字符串?
可能重复:
Python中的三元条件运算符
我有这个问题,不知道谷歌这个问题:
(value == 'ok') ? 'ok' : 'not ok'
我的意思是语法:
(expression) ? (return if <expresion> is true) : (return this value if <expresion> is false
Run Code Online (Sandbox Code Playgroud)