如果Python没有三元条件运算符,是否可以使用其他语言结构模拟一个?
如何找到包含-1s,1s和0s的列表的多数票?
例如,给出一个列表:
x = [-1, -1, -1, -1, 0]
Run Code Online (Sandbox Code Playgroud)
大多数是-1,因此输出应该返回 -1
另一个例子,给出一个列表:
x = [1, 1, 1, 0, 0, -1]
Run Code Online (Sandbox Code Playgroud)
多数票将是 1
当我们有平局时,多数投票应该返回0,例如:
x = [1, 1, 1, -1, -1, -1]
Run Code Online (Sandbox Code Playgroud)
这也应该返回零:
x = [1, 1, 0, 0, -1, -1]
Run Code Online (Sandbox Code Playgroud)
获得多数投票的最简单案例似乎是将列表加起来并检查它是否为负数,正数或0.
>>> x = [-1, -1, -1, -1, 0]
>>> sum(x) # So majority -> 0
-4
>>> x = [-1, 1, 1, 1, 0]
>>> sum(x) # So majority -> 1
2
>>> x = [-1, -1, 1, 1, …
Run Code Online (Sandbox Code Playgroud) 我有以下数据框:
example = pd.DataFrame({"dirr":[1,0,-1,-1,1,-1,0],
"value": [125,130,80,8,150,251,18],
"result":[np.NaN for _ in range(7)]})
Run Code Online (Sandbox Code Playgroud)
我想用 cummin() 和 cummax() 执行以下操作:
example["result"].apply(lambda x : x= example["value"].cummax() if example["dirr"]==1
else x= example["value"].cummin() if example["dirr"]==-1
else x= NaN if if example["dirr"]==0
)
Run Code Online (Sandbox Code Playgroud)
这是返回:error: invalid syntax
。
谁能帮我纠正一下吗?
这将是预期的输出:
example = pd.DataFrame({"dirr":[1,0,-1,-1,1,-1,0],
"value": [125,130,80,8,150,251,18],
"result":[125, NaN, 80, 8, 150, 8, NaN]})
Run Code Online (Sandbox Code Playgroud)
编辑:
因此,根据 @su79eu7k 的答案,以下函数将执行以下操作:
def calc(x):
if x['dirr'] == 1:
return np.diag(example["value"].cummax())
elif x['dirr'] == -1:
return np.diag(example["value"].cummin())
else:
return np.nan
Run Code Online (Sandbox Code Playgroud)
我应该能够将其推入 lambda,但仍然被语法错误阻止......我仍然没有看到?
example["result"]=example.apply(lambda x : …
Run Code Online (Sandbox Code Playgroud) 我是Python的新手,目前正在学习lambda
表达.我正在解决一个辅导课程
定义一个函数
max_of_three()
,它将三个数字作为参数并返回其中最大的一个.
我已经阅读了这篇旧文章并尝试过没有成功:
>>> max_of_three = lambda x, y, z : x if x > y else (y if y>z else z)
>>> max_of_three(91,2,322)
91
Run Code Online (Sandbox Code Playgroud)
为什么不回Z?这是X.
我的问题是:是否可以在回报中使用完整的条件语句(if,elif,else)?
我知道我可以这样做:
def foo():
return 10 if condition else 9
Run Code Online (Sandbox Code Playgroud)
我可以做这样的事情:
def foo():
return 10 if condition 8 elif condition else 9
Run Code Online (Sandbox Code Playgroud)
事后的想法:看一下这个表格看起来似乎不太可读,我的猜测是它可能没有任何有效的用例.无论如何,好奇心促使我问.提前感谢您的任何答案.
我最近发现了这个问题: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
。
我是 Python 的新手(而且很差),我只是想知道是否有人可以帮助我简化 if/elif 块。这是一个超级基本的代码,它基本上会询问某人在密码中想要什么,然后为他们随机化一个 pswd。但是如果用户想要大写和数字,还有一些选择。
if upper == True and numbers == True:
lettersAndDigits = string.ascii_letters + string.digits
elif upper == True and numbers == False:
lettersAndDigits = string.ascii_letters
elif upper == False and numbers == True:
lettersAndDigits = string.ascii_lowercase + string.digits
elif upper == False and numbers == False:
lettersAndDigits = string.ascii_lowercase
Run Code Online (Sandbox Code Playgroud)
对不起,菜鸟问题伙计们
谢谢一群人,这真的很有帮助:)
只是在复习我的 igcse,我正在尝试重新学习正确的程序。我的老师在python方面没那么强
python ×8
python-3.x ×2
binary ×1
expression ×1
if-statement ×1
lambda ×1
list ×1
operators ×1
pandas ×1
voting ×1