如果我有这样的清单:
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)
答案 0 :(得分:5)
您可以使用' '.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'
答案 1 :(得分:1)
您可以使用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()
答案 2 :(得分:1)
受liliscent's答案的启发,这是在整数到字符串转换后带有空格的解决方案:
import itertools as it
''.join([el if isinstance(el, str) else str(el) + ' ' for el in it.chain(*arr)]).rstrip()
答案 3 :(得分:0)
如果放在一行:
SELECT
CASE WHEN
DATE_TRUNC('MONTH', ABSTIME(start_ts)) = DATE_TRUNC('MONTH', CURRENT_DATE)
THEN 'current'
ELSE
TO_CHAR(ABSTIME(start_ts), 'YYYY-MM-DD')
END, *
FROM widgets limit 10
分解:
最后一个列表仅包含整数。如果转换为字符串,它们将不会像以前的列表一样在后面有额外的空白区域。
因此,对于我所做的三个子列表中的每一个:
res = " ".join(map(lambda lst: " ".join(map(lambda i: str(i).strip(), lst)), myList))
,其中map(lambda i: str(i).strip(), lst)
函数用于删除字符串前后的空格,类似于java中的strip()
函数。
然后trim()
函数将字符串列表中的所有值连接起来,并成为一个新字符串,其中原始列表中的元素由" ".join()
分隔。
因此将三个子列表中的每一个映射到字符串值,然后再次加入。