有没有办法可以将一个列表或一个字符串连接到另一个列表?

时间:2019-04-12 16:03:22

标签: python

我有一个功能,该功能基本上会将字符串列表添加到变量的开头。但是变量可以是字符串或列表。例如

a = ['left', 'right']   # error if a = 'left'
b = ['unnamed' for i in range(2)]
a = b + a

但是,当元素只有一个时,我也想让用户创建一个字符串。因此,您只需输入['left']即可代替'left'。但是,这当然会在a = b + a处引起错误。

是否有足够灵活的方法可以同时执行这两项操作。否则,我将不得不使用if else来区分这两种情况。

2 个答案:

答案 0 :(得分:2)

您检查类型,如果是字符串则转换为列表

a = ['left', 'right']   # error if a = 'left'
b = ['unnamed' for i in range(2)]

if type(a) == str: 
    a = [a]

a = b + a

答案 1 :(得分:0)

您可以使用numpy将字符串转换为数组。如果已经是数组np.array,则会增加维数,因此需要flatten()。之后,您可以使用集合来合并两个列表。

import numpy as np

arr = ['a', 'b']
arr1 = ['g']
string = 'h'

print(list(set(arr).union(set(np.array(string).flatten()))))
# ['a', 'b', 'h']
print(list(set(arr).union(set(np.array(arr1).flatten()))))
# ['a', 'b', 'g']

编辑:

您可以使用加法运算符实现相同的功能,但是您需要应用tolist()才能将numpy数组转换为python列表。

print(arr + np.array(string).flatten().tolist())
# ['a', 'b', 'h']
print(arr + np.array(arr1).flatten().tolist())
# ['a', 'b', 'g']