Had*_*dij 2 python string list python-3.x
我有嵌套的字符串列表为:
A = [["A","B","C"],["A","B"]]
Run Code Online (Sandbox Code Playgroud)
我试图加入子列表中的字符串以获取单个字符串列表,如下所示:
B = [['ABC'],['AB']]
Run Code Online (Sandbox Code Playgroud)
要么,
B = ['ABC','AB']
Run Code Online (Sandbox Code Playgroud)
我尝试使用''.join(A),''.join(str(v) for v in A)但是它们没有用。
这是我得到的错误:
TypeError:序列项0:预期的str实例,找到列表
您可以使用''.joinwithmap here 来实现这一点:
>>> A = [["A","B","C"],["A","B"]]
>>> list(map(''.join, A))
['ABC', 'AB']
# In Python 3.x, `map` returns a generator object.
# So explicitly type-casting it to `list`. You don't
# need to type-cast it to `list` in Python 2.x
Run Code Online (Sandbox Code Playgroud)
或者您可以将它与列表理解结合使用以获得所需的结果:
>>> [''.join(x) for x in A]
['ABC', 'AB']
Run Code Online (Sandbox Code Playgroud)
为了获得结果 as [['ABC'], ['AB']],您需要将结果字符串包装在另一个列表中:
>>> [[''.join(x)] for x in A]
[['ABC'], ['AB']]
## Dirty one using map (only for illustration, please use *list comprehension*)
# >>> list(map(lambda x: [''.join(x)], A))
# [['ABC'], ['AB']]
Run Code Online (Sandbox Code Playgroud)
您的代码问题:在您的情况下''.join(A)没有工作,因为它A是一个嵌套列表,但''.join(A)尝试将所有存在的元素连接在一起,A将它们视为string。这就是你的错误"expected strinstance, listfound" 的原因。相反,您需要将每个子列表传递给您的''.join(..)调用。这可以用来实现map和列表理解如上所示。
简单
map(''.join, A)
['ABC', 'AB']
Run Code Online (Sandbox Code Playgroud)