减去两个不同数据类型的python列表的元素

减去两个不同数据类型的python列表的元素,python,python-3.x,list,Python,Python 3.x,List,我有两个python列表,它们的元素数量相等。我只需要减去两个忽略字符串元素的int和float元素 list_1 = [1, 2, 3.0, 'test', 6.5] list_2 = [2, 3, 10.0, 'test', 12.5] 现在,第三个列表应该是两个列表元素的最终差异 list_3 = [1, 1, 7.0, 'test', 6.0] 我可以将字符串值保留在列表的列表3中。这是一种使用列表理解的方法 演示: list_1 = [1, 2, 3.0, 'test', 6.5]

我有两个python列表,它们的元素数量相等。我只需要减去两个忽略字符串元素的int和float元素

list_1 = [1, 2, 3.0, 'test', 6.5]
list_2 = [2, 3, 10.0, 'test', 12.5]
现在,第三个列表应该是两个列表元素的最终差异

list_3 = [1, 1, 7.0, 'test', 6.0]

我可以将字符串值保留在列表的列表3中。

这是一种使用列表理解的方法

演示:

list_1 = [1, 2, 3.0, 'test', 6.5]
list_2 = [2, 3, 10.0, 'test', 12.5]

res = [v if (isinstance(i, str) or isinstance(v, str)) else (i-v) for i,v in zip(list_2, list_1)]
print(res)
[1, 1, 7.0, 'test', 6.0]
输出:

list_1 = [1, 2, 3.0, 'test', 6.5]
list_2 = [2, 3, 10.0, 'test', 12.5]

res = [v if (isinstance(i, str) or isinstance(v, str)) else (i-v) for i,v in zip(list_2, list_1)]
print(res)
[1, 1, 7.0, 'test', 6.0]

当两个值都是数字时,此列表将返回差值,如果不是这种情况,则将返回
list_1
中的值:

from numbers import Number

list_1 = [1, 2, 3.0, 'test', 6.5]
list_2 = [2, 3, 10.0, 'test', 12.5]

list_3 = [y-x if isinstance(x,Number) and isinstance(y,Number) 
              else x for x,y in zip(list_1,list_2)]


您也可以尝试以下方法

>>> list_1 = [1, 2, 3.0, 'test', 6.5]
>>> list_2 = [2, 3, 10.0, 'test', 12.5]
>>>
>>> list_3 = [item2-item1 if type(item1) is int or type(item1) is float else item1 if item1 else item2 for item1, item2 in zip(list_1, list_2)]
>>>
>>> list_3
[1, 1, 7.0, 'test', 6.0]
>>>

你试过什么,到底有什么问题?@jornsharpe我试过这个list_3=list(map(operator.sub,list_2,list_1)),但是str减法出现了一个错误。这是意外的吗?您试图避免这个问题的原因是什么?另外,您应该添加更多关于列表和所需结果的信息,例如第三项属于哪个列表等。如果其中一个值是str,而另一个值是float或integer,您会怎么做?