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

时间:2021-06-18 17:47:57

标签: python python-3.x

我正在尝试使用 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] = 字符串,然后连接而不是求和?

4 个答案:

答案 0 :(得分:10)

简单

+ 运算符怎么样?

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']

答案 1 :(得分:0)

您可以将 mapadd 函数一起使用-

from operator import add
x = [2, 4, 'a']
y = [5, 7, 'b']
sum_list = list(map(add, x, y))

输出 -

[7, 11, 'ab']

答案 2 :(得分:0)

import operator
from functools import reduce

list1 = [2, 4, 'a']
list2 = [5, 7, 'b']

sum_list = [reduce(operator.add, x) for x in zip(list1, list2)]

print(sum_list)  # [7, 11, 'ab']

答案 3 :(得分:0)

这是我想出的 if 语句。您可以调整它以满足您的需求。基本上,只需将项目与您知道的字符串进行比较即可。

 a = "This is A"
    b = 1
    type_str = "Test"
def test_str(x):
    if type(x) == type(type_str):
        print("This is a string")
    elif type(x) != type(type_str):
        print("This is not a string")
test_str(a)
test_str(b)
相关问题