我是一名相对较新的 Python 开发人员,但我有 Java 背景。在 Java 中,有一行布尔检查器/分配器(由于缺乏更好的术语):
int result = (x)?y:z;
我试图在Python中使用类似的方法,但我不确定这个结构是否存在。有没有一种方法可以声明一个变量,检查条件是否为真并将其分配给两个值之一而不使用 if/else?
我有一个列表,其元素是一个json对象或None.将它转换为0和1的列表最优雅的方法是什么.例如,这是我的输入:
mylist = [j1, j2, None, j3, None]
j1,j2,j3是json对象.预期的产出是
output_list = [1, 1, 0, 1, 0]
我可以使用for循环后跟if语句来实现它.有没有办法做到更优雅/ pythonic?
我很清楚你可以if else用Python 做一行语句,但我想知道是否有可能添加一个or.出于某种原因,这不起作用,即使它看起来应该如此.有没有办法做到这一点:
def write(value):
    return 'That is not a good value' if value is not 1 or 0 #SyntaxError: invalid syntax
编辑
因此,此函数将检查传入的值是否为整数0或1,'That is not a good value'如果不是则返回,否则返回任何内容.IE
write(1) #Nothing
write(2) # That is not a good value
我可以用以下形式表示IF-THEN语句:
a = (x==10) ? true : false;
这相当于
if (x==10)
  a=true;
else
  a=false;
是否有可能在Python中做同样的事情?
我读了一个(有点)幽默的故事,关于TSA向开发人员支付140万美元的应用程序只是输出一个随机的"左"或"右"箭头.我决定在Python中自己尝试一下.
我想知道我是否可以使用Lambda表达式或列表理解等缩短if-else语句...有条件地打印字符串的语法简写.
import os, datetime, random
while True:
    os.system('clear')
    print "ENTER to continue, or type 'quit'"
    print datetime.datetime.now()
    print ''
    i = random.randint(1,2)
    if i == 1:
        print 'Left'
    else:
        print 'Right'
    print ''
    prompt = raw_input("")
    if prompt == 'quit':
        quit()
如何在Python(v 2.7)中将以下内容转换为lambda函数?
def my_func(obj): 
   if obj.type: 
       return obj.name
   else: 
       return obj.type
我最近发现了这个问题:Does Python have a ternary conditional operator? 并发现称为三元条件的东西a = b if c == d else e。
我的问题:有一种方法可以使三元条件与elif? 类似的东西a = b if c == d elif e == f i else j。
我试图从3行简化链式比较:
if -10 < amount < 10:  # amount can range from -999 to 999
    width = 3
else:
    width = 2
到一行表达式:
width = 3 if (-10 < amount < 10) else width = 2
Pycharm抛出一个 SyntaxError
SyntaxError:无法分配给条件表达式
什么是纠正写的方式简化这个陈述?我试过了:
width = 3 if (-10 < amount) else width = 2
但我收到同样的错误.我正在使用Python 3.谢谢.
我正在尝试创建一个列表,其中偶数显示为偶数,奇数显示为"奇数".
这是我正在尝试的代码.
lst = [if x % 2 == 0 else 'odd' for x in range(11)]
我希望得到这样的东西
[0, "odd", 2, "odd", 4, "odd", 6, "odd", 8, "odd", 10]
但我一直有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
我究竟做错了什么?
这是问题:
实现函数processList2(inputList, specialItem, ignoreItems),该函数返回一个新列表,其中包含inputList(按原始顺序)的所有项目,但以下各项除外
ignoreItemsspecialItem(如果specialItem不是ignoreItems)应该成为串"special"在新的清单。我试图通过inputList使用列表理解来创建一个新列表。我可以items not in ignoreItems,但似乎无法弄清楚if的打印方式item == specialItem。
这是我到目前为止的内容:
def processList2(inputList, specialItem, ignoreItems):
    return [item for item in inputList if item not in ignoreItems]
样本输出类似于:
>>> processList2([1,1,2,2], 1, [2])
['special', 'special']
要么
>>> processList2([1,2,3,4,True,'dog'], 4, [3,5,4])
[1, 2, True, 'dog']
python ×10
if-statement ×2
boolean ×1
comparison ×1
function ×1
idioms ×1
lambda ×1
python-2.7 ×1
python-3.x ×1