我需要在列表中连接字符串并将整数添加到总和中;当然,我打算稍后将其更改为其他数据类型 - 非常感谢所有类型的回复
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'在开头初始化的输出就好像它跳过了for循环:)
答案 0 :(得分:3)
从字面上理解你的语句(你只需要整数,而不是数字),整个程序归结为两个函数调用,列表的过滤版本
>>> l = ['magical unicorns', 19, 'hello', 98.98, 'world']
>>> ''.join([s for s in l if isinstance(s,str)])
'magical unicornshelloworld'
>>> sum([i for i in l if isinstance(i,int)])
19
>>
答案 1 :(得分:0)
for i in l:
if type(o) is str:
comb_str += i
else:
comb_int += i
请注意,comb_int
似乎有点用词不当,因为列表中的非整数值正在添加到它。也许这些应该首先被转换为int?
另请注意,此代码对于列表中的非String / integer / double对象将失败,因此请注意异常。
最后,请注意字符串连接速度相对较慢(O(n) time-wise)
),因此请查看Str.join
作为更好的解决方案。
答案 2 :(得分:0)
你可以试试这个:
l = ['magical unicorns', 19, 'hello', 98.98, 'world']
l1 = [g for g in l if type(g)==int]
l2 = [g for g in l if type(g)==str]
print(sum(l1))
print(''.join(l2))
这将打印您想要的结果。