如何检查列表项是否为字符串

我正在尝试使用 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']


以上是如何检查列表项是否为字符串的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>