如果我有这样的清单:
arr = [
["Hi ", "My ", "Name "],
["Is ", "Sally. ", "Born "],
[3, 13, 2010]
]
你怎么会在一个声明的单个字符串中得到它
H, My Name Is Sally. Born 3 13 2010
有比这更简单的方法
example = ""
for x in range(len(arr)):
for j in range(len(arr[x])):
example = example + str(arr[x][j])
print (example)
你可以使用' '.join
:
myList = [
["Hi ", "My ", "Name "],
["Is ", "Sally. ", "Born "],
[3, 13, 2010]
]
sentence = ''.join(str(i)+[' ', ''][type(i) == str] for b in myList for i in b)[:-1]
输出:
'Hi My Name Is Sally. Born 3 13 2010'
你可以使用itertools.chain
:
import itertools as it
''.join(map(str, it.chain(*arr)))
编辑:
我刚注意到OP需要数字之间的空格。所以它应该是:
''.join(map(lambda s: s if isinstance(s, str) else str(s)+' ', it.chain(*arr))).rstrip()
受liliscent's回答的启发,这里是整数到字符串转换后带有空格的解决方案:
import itertools as it
''.join([el if isinstance(el, str) else str(el) + ' ' for el in it.chain(*arr)]).rstrip()
如果放在一行:
res = " ".join(map(lambda lst: " ".join(map(lambda i: str(i).strip(), lst)), myList))
分解:
最后一个列表仅包含整数。如果转换为字符串,它们将不会像以前的列表一样在后面有额外的空白区域。
因此,对于我所做的三个子列表中的每一个:map(lambda i: str(i).strip(), lst)
,其中strip()
函数用于移除字符串前面和后面的空白区域,类似于java中的trim()
函数。
然后" ".join()
函数将所有值连接到字符串列表中,并成为一个新字符串,其中原始列表中的元素由" "
分隔。
因此,将三个子列表中的每一个映射到字符串值,然后再次加入。