如何检查列表项是否为字符串
我正在尝试使用 zip 函数将两个列表添加在一起:
x = [2, 4]
y = [5, 7]
sum_list = [sum(x) for x in zip(list1, list2)]
> [7,11]
但是,如果列表由字符串组成,我想改为连接,但 sum 函数在这种情况下不起作用。
x = ['a']
y = ['b']
return ['ab']
有没有办法把它变成一个 if 语句,这样如果 x[0] = string,然后连接而不是 sum?
回答
简单的
怎么样+操作?
def concat_or_sum(list1, list2):
return [x + y for x, y in zip(list1, list2)]
sum_list = concat_or_sum([2, 4], [5, 7])
print(sum_list) # [7, 11]
sum_list = concat_or_sum(['a', 'c'], ['b', 'd'])
print(sum_list) # ['ab', 'cd']
提升
+运算符 : 的方法版本怎么样operator.add?
第一个解决方案是依赖于数据的,当改变列表的数量时,它也需要改变代码。
解决方案是一次又一次地应用+(使用add版本)对的每个值
import operator
from functools import reduce
def concat_or_sum(*lists):
return [reduce(operator.add, x) for x in zip(*lists)]
sum_list = concat_or_sum([2, 4, 't'], [5, 7, 't'], [10, 11, 't'])
print(sum_list) # [17, 22, 'ttt']
sum_list = concat_or_sum([1, 'a', 'c'], [2, 'b', 'd'], [3, 'e', 'f'])
print(sum_list) # [6, 'abe', 'cdf']