如果Python没有三元条件运算符,是否可以使用其他语言结构模拟一个?
我一直在用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,但它总体上显示了我正在寻找的东西.我想知道布尔字符串格式是否有任何有效的表达式,类似于上面的.在搜索了一下之后,我无法找到任何与条件字符串格式有关的内容.我确实在格式字符串上找到了几个帖子,但这不是我想要的.
如果确实存在类似的东西,那将非常有用.我也对可能提出的任何替代方法持开放态度.提前感谢您提供的任何帮助.
我有这个
bc = 'off'
if c.page == 'blog':
bc = 'on'
print bc
Run Code Online (Sandbox Code Playgroud)
在python中有更多的pythonic(和/或更短)的写法吗?
如果Django Model的字段与条件匹配,则将其分配给值.
g = Car.objects.get(pk=1234)
g.data_version = my_dict['dataVersion'] if my_dict else expression_false # Do nothing??
Run Code Online (Sandbox Code Playgroud)
在那种情况下我怎么办?我们做不到if conditional else pass.
我知道我能做到:
if my_dict:
g.data_version = my_dict['dataVersion']
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有办法进行内联expression_true if conditional else do nothing.
我正在尝试创建一个列表,其中偶数显示为偶数,奇数显示为"奇数".
这是我正在尝试的代码.
lst = [if x % 2 == 0 else 'odd' for x in range(11)]
Run Code Online (Sandbox Code Playgroud)
我希望得到这样的东西
[0, "odd", 2, "odd", 4, "odd", 6, "odd", 8, "odd", 10]
Run Code Online (Sandbox Code Playgroud)
但我一直有SyntaxError异常:
>>> lst = [if x % 2 == 0 else 'odd' for x in range(11)]
File "<stdin>", line 1
lst = [if x % 2 == 0 else 'odd' for x in range(11)]
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?