python 多行列表输出和排序
python multiline list output and sorting
一个查询产生多行答案,并非所有行都有 output/result,并且会产生一个空行 []
我要
- 当任何一行有结果要显示时忽略所有其他空行[案例 1]
- 如果所有行 为空打印出一条消息。 [案例二]
我已经用循环语句 if & else
和 all()
或 any()
尝试了很多选项,但是我最好的选择是只满足第一个要求- 第二个要求全部为空.
仅满足第一个要求的代码片段
f = query(data)
for x in f:
if x:
print(x)
else:
if all(x):
print("no f found")
此外,我已经尝试了 any()
和 all()
以及它们的 not
变体,但没有成功
案例一
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
如果有人能帮助我,我将不胜感激
你可以通过引入一个变量轻松解决这个问题,发现:
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)
如果我对你的问题理解正确,你可以简单地使用一个标志来指示是否有任何结果。如果旗帜升起,则只会打印结果。否则,将打印“no f found”:
array = [['p=SDVjXSERgCziEsyhT4dIySuh9ha5Udt5b9F5TATeJ'],
[],
['p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC31'],
[]]
flag_some = False
for a in array:
if a:
print(a)
flag_some = True
if not flag_some:
print("no f found")
一个查询产生多行答案,并非所有行都有 output/result,并且会产生一个空行 []
我要
- 当任何一行有结果要显示时忽略所有其他空行[案例 1]
- 如果所有行 为空打印出一条消息。 [案例二]
我已经用循环语句 if & else
和 all()
或 any()
尝试了很多选项,但是我最好的选择是只满足第一个要求- 第二个要求全部为空.
仅满足第一个要求的代码片段
f = query(data)
for x in f:
if x:
print(x)
else:
if all(x):
print("no f found")
此外,我已经尝试了 any()
和 all()
以及它们的 not
变体,但没有成功
案例一 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
如果有人能帮助我,我将不胜感激
你可以通过引入一个变量轻松解决这个问题,发现:
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)
如果我对你的问题理解正确,你可以简单地使用一个标志来指示是否有任何结果。如果旗帜升起,则只会打印结果。否则,将打印“no f found”:
array = [['p=SDVjXSERgCziEsyhT4dIySuh9ha5Udt5b9F5TATeJ'],
[],
['p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC31'],
[]]
flag_some = False
for a in array:
if a:
print(a)
flag_some = True
if not flag_some:
print("no f found")