l = [['John'],['rides'],['bike'],['with'],['Mr.','Brown'],]
假设我有一个这样的列表对象。如何在不使用for语句的情况下连续打印列表对象并附加到字符串?
我想要的输出:
print("my sentence:" + ? )
print("people:" + ? + ", " + ?)
my sentence: John rides bike with Mr. Brown
people: John, Mr. Brown
主要编辑:
我之所以创建这个问题,是因为我分析了基于文本的文档并使用命名实体提取信息,所以我的问题是当我在列表中输入“name + surname”或“Blah Blah Organization”这样的顺序专有名词时:
[[u'Milletvekili', u'Ay\u015fe'], [u'oraya'], [u'Merve', u'Han\u0131m'], [u'ile'], [u'gitti'], [u'.']]
我有一个算法可以将列表对象与我的数据集进行比较,并描述实体类型。在if语句决定[u'Milletvekili',u'Ay \ u015fe']之后是一个人名;
if gettype(arr[i][0].split("'")[0]) == "Özel İsim":
newarr.append("[Person: " + str(arr[i][0]) + "]")
我将其添加到我的新列表中,这将是我的输出,如[人:布朗先生]。但是我必须对大写单词进行分组然后我总是这样输出:
[Person: [u'Milletvekili', u'Ay\u015fe']]
答案 0 :(得分:4)
不像“总和”那样优雅,但您可以将str.join()
和map()
与functools.partial()
一起使用:
>>> from functools import partial
>>> " ".join(map(partial(str.join, " "), l))
'John rides bike with Mr. Brown'
答案 1 :(得分:4)
借鉴this answer:
" ".join(sum(l, []))
Out[130]: 'John rides bike with Mr. Brown'
答案 2 :(得分:3)
展平列表,然后加入' '
。
>>> ' '.join(s for sub in l for s in sub)
'John rides bike with Mr. Brown'
或itertools.chain
:
>>> from itertools import chain
>>> ' '.join(chain(*l))
'John rides bike with Mr. Brown'