亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否可以在 python 中循環遍歷運算符(大于/小于)?

是否可以在 python 中循環遍歷運算符(大于/小于)?

ABOUTYOU 2023-02-12 19:03:24
我希望能夠遍歷關系運算符。我有以下代碼工作:TP = df[(df.Truth == 1) & eval(df.age >= cutoff)]我還有幾行,其中真值和關系運算符不同,但其他一切都相同。我嘗試創建一個列表并使用 eval 函數,但我知道這是錯誤的,因為我什至無法克服語法錯誤。truths = [[1,'>='],[0,'>='],[1,'<'],[0,'<']]for truth in truths:     truth_val = truth[0]     operator = truth[1]     TP = df[(df.Truth == truth) & eval(df.age operator cutoff)]我如何著手循環關系運算符而不是讓 python 將其作為字符串而是作為實際運算符?先感謝您!??!
查看完整描述

3 回答

?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

如果你想要實際的操作員,那么你應該使用operator庫:


import operator as op

那么你的代碼應該是這樣的:


truths = [[1, op.ge], [0, op.ge], [1, op.lt], [0, op.lt]]

for truth in truths:

  truth_val = truth[0]

  operator = truth[1]

  TP = df[(df.Truth == truth) & operator(df.age, cutoff)]

eval這是最安全的解決方案,強烈不鼓勵所有基于的解決方案,在運行時評估字符串是一個潛在的安全問題。


查看完整回答
反對 回復 2023-02-12
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

你能試一下嗎


truths = [[1,'>='],[0,'>='],[1,'<'],[0,'<']]

for truth in truths:

     truth_val = truth[0]

     operator = truth[1]

     TP = df[(df.Truth == truth) & eval("df.age"+ operator + cutoff)] # notice cutoff here should be string


查看完整回答
反對 回復 2023-02-12
?
catspeake

TA貢獻1111條經驗 獲得超0個贊

您需要提供eval()一個字符串:


truths = [[1,'>='],[0,'>='],[1,'<'],[0,'<']]

for truth in truths:

     truth_val = truth[0]

     operator = truth[1]

     print(eval(f"{df.age}{operator}{cutoff}"))


查看完整回答
反對 回復 2023-02-12
  • 3 回答
  • 0 關注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號