忽略列表中的空字符串或$ none时

时间:2018-10-12 01:51:25

标签: python

当有空字符串或有“ $ none”字符串时,我想完全忽略列表中的这些列表(顺便说一句,为什么会出现“ $ none”,这是什么意思?) 。在我的程序中,使用此命令时,我向列表返回了一个空字符串:

代码:

aaa = ["mom", "is", "king"]
example = ["buying", "mom", "is", "spending"]

下面的代码:

for x in aaa:
    if xx in example:
        if x in xx:
            return ""
        else:
            return xx

我只知道如何返回一个空字符串,但是不知道在触发时忽略“ if”这一部分的其他方式

如果以上无法完成,则以下将是我的主要问题。

我的代码:

a = [['checking-$none', ''],
['', 'checking-some'],
['checking-people', 'checking-might'],
['-checking-too', 'checking-be']]


for x in a:
    f = filter(None, x)
    for ff in f:
        print(ff)

当前输出:

checking-$none
checking-some
checking-people
checking-might
-checking-too
checking-be

预期输出:

checking-people
checking-might
-checking-too
checking-be

有办法吗?

2 个答案:

答案 0 :(得分:1)

您可以像这样使用列表理解:

[item for lst in a if all(item and '$none' not in item for item in lst) for item in lst]

使用示例输入a,返回:

['checking-people', 'checking-might', '-checking-too', 'checking-be']

或者,如果您只想打印,则下面的嵌套for循环将起作用:

for lst in a:
    for item in lst:
        if not item or '$none' in item:
            break
    else:
        print(*lst, sep='\n')

这将输出:

checking-people
checking-might
-checking-too
checking-be

答案 1 :(得分:0)

对您的代码进行的最小更改将过滤掉包含$ none的字符串

a = [['checking-$none', ''],
['', 'checking-some'],
['checking-people', 'checking-might'],
['-checking-too', 'checking-be']]



f = filter(lambda y: '' not in y and "checking-$none" not in y, a)
for x in sum(f, []): 
    print(x)