添加不同列表的拖曳列表

时间:2016-11-04 15:25:39

标签: list python-3.x

我正在尝试从列表中删除字符串,然后使用长度较小的列表查找新列表的总和。

我编写的代码在3-4个地方不起作用。我有一些问题, 为什么if语句不能正常工作? 如何为这种具有不同长度的列表编写加法函数?

这是我的代码:

def remove_text_from_list(the_list):
    z = []
    for x in the_list:
        if isinstance(x, float):
            z.append(x)
            return z


def add(a,b):
    return a+b

x = []
list1=['s', 1.0, 2.0, 'a', 3.0, 4.0,'b', 5.0, 6.0,'c', 7.0, 8.0]
list2=[10.0, 20.0]
newlist=remove_text_from_list(list1)
for i in newlist:
    for j in list2:
        f = add(i,j)
        final_list.append(f)
print(x)

期望的结果应如下所示:

final_list=[11,22,13,24,15,26,17,28]

2 个答案:

答案 0 :(得分:2)

使用生成器表达式创建一个生成list1浮点数的生成器。根据需要,使用itertools.cycle重复迭代list2。使用zip将来自list1的花车与来自list2的循环项目配对,并将它们添加到列表推导中。

>>> from itertools import cycle
>>> just_floats = (i for i in list1 if isinstance(i, float))
>>> [a+b for a, b in zip(just_floats, cycle(list2))]
[11.0, 22.0, 13.0, 24.0, 15.0, 26.0, 17.0, 28.0]

答案 1 :(得分:0)

您返回if语句中的列表。如果你在for循环结束时这样做,它应该工作:

def remove_text_from_list(the_list):
    z = []
    for x in the_list:
        if isinstance(x, float):
            z.append(x)
    return z

但是x仍然不是您预期的final_result,而是:

x = [11.0, 21.0, 12.0, 22.0, 13.0, 23.0, 14.0, 24.0, 15.0, 25.0, 16.0, 26.0, 17.0, 27.0, 18.0, 28.0]