作者yungyuc (酷狗喵千代)
看板Python
标题Re: [问题] 关於 if else 的问题
时间Fri Mar 21 20:28:41 2008
※ 引述《apua (左右开攻)》之铭言:
: 我最近学到在 python 上使用如下的语法
: (element1) if (condition) else (element2)
: eg1:
: ...
: 0 0 0 0 0 1 0 0 0 0
: eg2:
: [0, 0, 0, 0, 0, 1, 0, 0, 0, 0]
: 这种语法真的很好用, 而且跟英文文法也蛮像的
: (抱歉好像有点扯远了)
: 我想请问一下, C++ 是否也有类似这种语法呀?
: 还是说应该是在别的程式语言有类似的语法?
这是 Python 的 conditional expression。
作为 Pythonista,我很想说对对对,其它语言「也有」这种表示式。
不过摸着良心讲,conditional expression 是从 C 学过来,
而且还是很晚 (2.5) 才加进来的语言元素:
http://docs.python.org/whatsnew/pep-308.html
C 一直都有 conditional expression:
var = (condition) ? [var for true] : [var for false]
顺序和 Python 定义的不太一样,我常常忘记;Python 的比较好记。
在 Python 里,
以下的 expression 常常被用来当作 conditional expression 的代用品:
condition and var_for_true or var_for_false
它可以「作出」conditional expression 的效果,不过不是等价的!
这个 logical construct 如果遇到 var_for_true 评估为假的时候就会破功。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 164.107.248.238
※ 编辑: yungyuc 来自: 164.107.248.238 (03/21 20:31)
※ 编辑: yungyuc 来自: 164.107.248.238 (03/21 20:32)
1F:推 xcycl:老实说, 这两种用法是不大一样 ... 03/22 01:08
2F:→ xcycl:比起 C, list comprehension 倒是更贴切 ... 03/22 01:10
3F:推 apua:虽说是不大一样, 但这正是我需要的答案, 感激 03/28 13:11
4F:→ yungyuc:原作写的第一种是 conditional expression 03/29 03:57
5F:→ yungyuc:第二种是 list comprehension 03/29 03:57
6F:→ yungyuc:我只想回第一种,不过忘了删一些引文 Orz 03/29 03:58