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

时间:2015-07-10 19:44:10

标签: python string list

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'],其中应为[]

但如果我改变了以下内容:

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

输出为[]

3 个答案:

答案 0 :(得分:8)

空字符串总是"在"一个字符串。这是预期的。

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

答案 1 :(得分:3)

'' in t检查空字符串是否为t的子字符串。但是空字符串是每个字符串的子字符串。因此,您的条件始终返回True,并且从aList中删除任何内容。

答案 2 :(得分:0)

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