为什么当x(t)为空时输出是['a','b','a']。 Python

问题描述:

def x(t): 
    return '' in t 

def t(aList): 
    bList = aList[:] 
    for i in bList: 
     if x(i) == False: 
      aList.remove(i) 
    print aList 

t(['a','b','c']) 

输出是['a','b','a']它应该是[]为什么当x(t)为空时输出是['a','b','a']。 Python

但是,如果我改变如下:

def x(t): 
    return 'd' in t 

输出将[]

+3

因为 '在 ' '在' b'' a'',和''''! – jonrsharpe

+0

你的意思是输出是'['a','b','c']'? – BrenBarn

'' in t检查空字符串是否为t的子字符串。但是空字符串是每个字符串的子字符串。所以你的条件总是返回True,并且不会从aList中删除任何东西。

空字符串总是“在”字符串中。这是预料之中的。

>>> '' in 'hello' 
True 
>>> '' in '' 
True 
>>> 'a' in '' 
False 
>>> 'a' in 'abc' 
True 
>>> 'd' in 'abc' 
False 

def t(aList): 
    print [i for i in aList if i] 
+4

'print filter(i)' – Kupiakos