Python:快捷条件表达式

2024-09-29 21:34:20 发布

您现在位置:Python中文网/ 问答频道 /正文

快捷条件表达式:
expression1如果condition其他expression2
x=1 if a>3 else 2
但是:我可以在开头有两个表达式吗?
x=1,b=3 if a>3 else 2

感谢>idontknow,解决方案是>

    previousTime,BS_Count=(db_row_to_list[0][14],BS_Count+1) if db_row_to_list[0][14] is not None else (db_row_to_list[0][3],BS_Count)

Tags: todbifbs表达式count解决方案condition
3条回答

不完全是。对于这种情况,可以使用if语句

if a > 3:
    x = 1
    b = 3
else:
    x = 2
    b = None

如果希望所有内容都成为一行程序,可以在Python中使用元组解包。元组解包的作用基本上是从元组中获取元素并将它们存储为变量,而不是元组的元素

这一概念的应用如下:

x, b = (1, 3) if a > 3 else (2, None)

请注意,这是一个单行线!🤗

编辑:在更新的上下文中回答您的问题:

您可以使用以下较短的代码。我想效果是一样的

a = 3
b = 7
c = 6
a, b = (8, b+1) if c > 3 else (5, b)
print(a, b)

您可以使用tuples

>>> a = 4
>>> (x, b) = (1, 3) if a > 3 else (2, 2)
>>> x
1
>>> b
3
>>>

在您的示例中:

x=1 if a>3 else 2

条件表达式部分是:

1 if a>3 else 2

因此,您将该条件表达式的结果赋值给x

在第二个示例中,这是无效语法:

x=1,b=3 if a>3 else 2

这是因为它相当于:

(1,b)=3 if a>3 else 2

或者,作为一个简单的例子:

(1,b)=3

这是无效的语法,因为您无法在Python中执行类似1 = 3的操作,而这正是该代码试图执行的操作。虽然如果元组的两个元素都不是文本,但会出现不同的错误:

(b,a)=3
TypeError: cannot unpack non-iterable int object

因此,如果要对条件表达式执行多个赋值,可以让条件表达式返回一个元组,并让左侧为要赋值的两个变量的元组:

x,b=(1, 3) if a>3 else (2, 2)

这相当于:

if a > 3:
    x = 1
    b = 3
else:
    x = 2
    b = 2

这就是我认为您使用原始代码的目的

相关问题 更多 >

    热门问题