for循环来连接字符串

时间:2017-11-17 00:33:10

标签: python loops for-loop

我需要在列表中连接字符串并将整数添加到总和中;当然,我打算稍后将其更改为其他数据类型 - 非常感谢所有类型的回复

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循环:)

3 个答案:

答案 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))

这将打印您想要的结果。