为什么当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
输出将[]
。
答
'' in t
检查空字符串是否为t
的子字符串。但是空字符串是每个字符串的子字符串。所以你的条件总是返回True,并且不会从aList
中删除任何东西。
答
空字符串总是“在”字符串中。这是预料之中的。
>>> '' in 'hello'
True
>>> '' in ''
True
>>> 'a' in ''
False
>>> 'a' in 'abc'
True
>>> 'd' in 'abc'
False
因为 '在 ' '在' b'' a'',和''''! – jonrsharpe
你的意思是输出是'['a','b','c']'? – BrenBarn