全部,
有人可以解释为什么第二个代码没有返回True吗?
第一个代码
if 'geeta' in 'geetansh':
print ("True")
else:
print ("False")
输出:True
第二段代码
if 'geeta' in 'geetansh'.split():
print ("True")
else:
print ("False")
输出:False
导致此不匹配的'geetansh'
(列表)和'geetansh'.split()
(数组)之间的这种特殊区别是什么?
答案 0 :(得分:3)
' geetansh'是python中的一个字符串。 所以
--with-thread-safety
检查字符串' geetansh'包含字符串' geeta'。
另一方面,' geetansh' .split()是python中的列表。 split()返回一个列表,所以' geetanch' .split()返回[' geetansh']。 所以
if 'geeta' in 'geetansh':
检查列表[' geetansh']是否包含项目' geeta'。列表[' geetansh']仅包含' geetansh'。
答案 1 :(得分:0)
基本区别在于,str.split()返回一个列表!
比较a in b
时,比较就像,
b
是一个列表,然后必须是b中的项目。b
是一个字符串,然后a的一部分在b 即,
>>> 'geeta' in 'geetansh'
True
>>> 'geeta' in 'geetansh'.split()
False
>>> print 'geetansh'.split()
['geetansh']
>>> print type('geetansh'.split())
<type 'list'>
>>> print type('geetansh')
<type 'str'>
答案 2 :(得分:0)
split()
方法返回一个数组
'geetansh'.split() #return an array ['geetansh']
请改用:
if 'geeta' in 'geetansh'.split()[0]:
print ("True")
else:
print ("False")
答案 3 :(得分:0)
'geetansh'.split()
会返回一个列表['geetansh']
,因此它实际上并不包含'geeta'
。