我之前发布过这篇文章并试图弄清楚这在演示方面是否更有效。我试图连接字符串并分别从列表中求和整数。出于某种原因,我没有得到我预期的输出
l = ['magical unicorns', 19, 'hello', 98.98, 'world']
comb_str = ''
comb_int = 0
for i in l:
if type(i) is 'str':
comb_str = comb_str + 'i'
elif type(i) is 'int':
comb_int += i
else:
pass
print comb_str
print comb_int
答案 0 :(得分:3)
"类型(i)是' str'"永远不会是真的。
尝试使用类似isinstance(i, str)
的内容。类似于int检查。实际上,type(i) is str
也会起作用。请注意,str不在引号中。
答案 1 :(得分:0)
用于连接字符串:
print "".join(filter(lambda x: isinstance(x, basestring), l))
输出:
'magical unicornshelloworld'
求和整数:
import numbers
print sum(filter(lambda x: isinstance(x, numbers.Number), l))
输出:
117.98
答案 2 :(得分:0)
使用isinstance函数而不是类型。 这里测试的代码:
l = ['magical unicorns', 19, 'hello', 98.98, 'world']
con=''
sum=0
for i in l:
print (i)
if isinstance(i, str):
con = con+str(i)
elif isinstance(i, int):
sum = sum+i
else:
pass
print (con)
print (sum)