我有一个功能,该功能基本上会将字符串列表添加到变量的开头。但是变量可以是字符串或列表。例如
a = ['left', 'right'] # error if a = 'left'
b = ['unnamed' for i in range(2)]
a = b + a
但是,当元素只有一个时,我也想让用户创建一个字符串。因此,您只需输入['left']
即可代替'left'
。但是,这当然会在a = b + a
处引起错误。
是否有足够灵活的方法可以同时执行这两项操作。否则,我将不得不使用if else
来区分这两种情况。
答案 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']