4Manuals

  • PDF Cloud HOME

如何在一行中编写一个for循环和多个if语句? Download

    如何将文本边界框与pyplot.Rectangle对齐? 导入类问题 在Python数据框中选择列时出错 使用Rabbit的pika确认消息 如何在按住键的同时暂停VideoStream? Python OpenCV TypeError:无法处理此数据类型 使用buildozer不会下载sdl2_image SMTPSenderRefused,421,超出超时 Tensorflow多线程推理比单线程推理慢 关于python中变量的困惑。 python如何使用变量?

是否可以在一行中编写类似的内容?

for x in list: 
   if condition1: 
       (...) 
   elif condition2: 
       (...) 
   else: 
       (...) 

另一种询问方式是:是否可以合并以下列表理解?

(...) for x in list

和

123 if condition1 else 345 if condition2 else 0

3 个答案:

答案 0 :(得分:2)

您几乎想将要做的事视为坏作风。也许是XY problem?在这种情况下,您应该打开另一个带有潜在问题的问题。

如果确定这是您想要的,请使用 PEP 308 -- Conditional Expressions 查看以下示例:

>>> def f(condition1, condition2):
...     return 1 if condition1 else 2 if condition2 else 3
... 
>>> f(True, False)
1
>>> f(True, True)
1
>>> f(False, True)
2
>>> f(False, False)
3

随后,您的示例

for x in list: 
   if condition1: 
       (...) 
   elif condition2: 
       (...) 
   else: 
       (...) 

可以写为列表理解,如下所示:

[(...) if condition1 else (...) if condition2 else (...) for x in list]

答案 1 :(得分:0)

是的,有很多方法,但不建议这样做。 这是一个如何做的例子:

l = [1,2,3,4,5,6,7]

for x in l:
  if x%2 == 0:
    print("Even")
  elif x%2 == 1:
    print("Odd")
  else:
    print("Nothing")

print("And here the one-liner:")

[print("Even") if x%2 == 0 else print("Odd") if x%2 == 1 else print("Nothing") for x in l]

出于可读性考虑,我不建议这样做。 阅读The Zen of Python,不要写太长的行(最多80个字符)

答案 2 :(得分:0)

使用lsit理解

var = [如果i ==某物或i ==某物,则列表中的i为i] here

的更多内容



Similar searches
    适用于Android的Xamarin UITest ScrollDownTo真的很慢 使用Excel / VBA在用户窗体Web浏览器上单击按钮 目标检测,光学字符识别,Python,Tesseract,注意OCR,Tensorflow 调用未定义函数mysqli_query()错误 Selenium(Python)是从网页上下载大量文件的好方法吗?