如何加入嵌套的字符串列表并获得结果作为新的字符串列表?

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实例,找到列表

Moi*_*dri 7

您可以使用''.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列表理解如上所示。


eag*_*gle 5

简单

map(''.join, A)

['ABC', 'AB']
Run Code Online (Sandbox Code Playgroud)

  • 我想我应该使用`list(map(''.join, A))` (2认同)