首页 > 解决方案 > python多行列表输出和排序

问题描述

查询产生多行答案,并非总是所有行都有任何输出/结果,并且会产生空行[]

我想要

  1. 当任何一行有结果要显示并忽略所有其他空行时[案例 1]
  2. 如果所有行都为空,则打印出一条消息。【案例二】

我已经尝试了许多带有循环语句的选项,if & else或者all()any()最好的方法是仅满足第一个要求- 我无法获得所有 empty 的第二个要求

只提供第一个要求的代码片段

    f = query(data)
    for x in f:
        if x:
            print(x)
        else:
            if all(x):
               print("no f found")

另外,我已经尝试过两者any()all()它们的not变化,但没有运气

案例1 f查询的输出,当有一些结果时,[在这种情况下只有4个结果中的2个]

['p=SDVjXSERgCziEsyhT4dIySuh9ha5Udt5b9F5TATeJ']
[]
['p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC31']
[]

欲望输出

p=SDVjXSERgCziEsyhT4dIySuh9ha5Udt5b9F5TATeJ
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC31

情况2,f查询的输出,完全没有结果的时候

[]
[]
[]
[]

欲望输出

no f found

**我不想要的是为空no f found 的每一行获取一个**

p=SDVjXSERgCziEsyhT4dIySuh9ha5Udt5b9F5TATeJ
no f found
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC31
no f found

或者

no f found
no f found
no f found
no f found

如果有人能帮帮我,我将不胜感激

标签: pythonlistpython-3.7any

解决方案


您可以通过引入一个变量轻松解决这个问题,发现:

found = False
f = query(data)
for x in f:
    if x:
        print(x)
        found = True

if not found:
    print("no f found")

'if not any(f)' 也可能有效,但无论如何,当你第一次遍历列表时使用这样的变量是可以的,这样你就可以获得信息而无需再次使用 any()。

使用 any() 这可能是一个不错的方法:

f = query(data)
if not any(f):
    print("no f found")
else:
    for x in f:
        if x:
            print(x)

推荐阅读