有没有办法编写一个If可以有多个参数的(或等效的)语句,如果其中任何一个满足逻辑,那么使用该变量?
例如
if len(x) == 1 or len(y) == 1 or len(z) == 1 or ... len(zz) == 1:
# do something with the variable that met the condition
Run Code Online (Sandbox Code Playgroud)
所以说只有z长度1,我可以用第一个True答案并使用它的方式写出上面的想法/公式吗?
所以像
x = "123"
y = "234"
z = "2"
xx = "1234"
yy = "12345"
if len(x) == 1 or len(y) == 1 or len(z) == 1 or len(xx) == 1 or len(yy) == 1:
#do something with the variable that satisfies the condition, so `z` in this case.
Run Code Online (Sandbox Code Playgroud)
这有任何意义吗?变量的长度可以随时改变,所以我希望能够说"如果满足任何条件,使用符合条件的变量"......?
在上文中,我事先并不知道z将是唯一符合标准的人,所以我的Then陈述不能z = "new value"或不管我想做什么.
编辑:对不起,每条评论我都知道检查len整数是不行的.这仅仅是为了说明目的,这是我第一次想到"测试".对不起,如果len有点困惑.我主要只是想看看我是否可以使用If语句(或相关语句),我不知道哪些变量符合条件.(我对python仍然是新的,所以我对我缺乏语义或适当的术语表示诚挚的道歉).我想elif尽可能地避免因为它可以变得啰嗦.(但如果这是最pythonic的方式,那就这样吧!)
ere*_*non 11
虽然@pault的答案解决了你的问题,但我认为它不具有超级可读性.如果你只有几个变量,pythons mantra指示一种简单明了的方式:
if len(x) == 1:
f(x)
elif len(y) == 1:
f(y)
elif len(z) == 1:
f(z)
Run Code Online (Sandbox Code Playgroud)
否则,如果你有一个列表,for循环是可读和有效的:
for l in ls:
if len(l) == 1:
f(l)
break
Run Code Online (Sandbox Code Playgroud)
您可以next在此处使用从符合条件的选项列表中选择第一项:
value = next((item for item in [x, y, z] if len(item)==1), None)
if value is not None:
...
Run Code Online (Sandbox Code Playgroud)
next()如果没有值符合您的条件,则第二个参数为默认值.
| 归档时间: |
|
| 查看次数: |
866 次 |
| 最近记录: |