使用python连接两个列表中的项目以形成n-gram

时间:2013-11-27 12:50:06

标签: python concatenation

我的目标是将k与k1中的每个项目连接起来,形成一个二元组列表。

k='john'
k1=['john', 'is', 'sleeping']

My attempt
y=[(x +',', k) for x in k1]

My output
[('john,', 'john'), ('is,', 'john'), ('sleeping,', 'john')]

Desired output
[('john', 'john'), ('is' , 'john'), ('sleeping' , 'john')]

我只是想在每个二元组中的第一个单词之后删除逗号。

感谢您的建议。

3 个答案:

答案 0 :(得分:2)

k='john'
k1=['john', 'is', 'sleeping']
print [(i, k) for i in k1]

<强>输出

[('john', 'john'), ('is', 'john'), ('sleeping', 'john')]

如果k1k

中有更多元素,则可以使用kk1制作笛卡尔积
k=['john']
k1=['john', 'is', 'sleeping']
from itertools import product
print [item for item in product(k1, k)]

答案 1 :(得分:1)

那是如此接近,你自己加了。删除+ ',',您就完成了!

y=[(x, k) for x in k1]

我认为你不需要它,但为了这个答案的完成,这是一个演示:

>>> k='john'
>>> k1=['john', 'is', 'sleeping']
>>> y=[(x, k) for x in k1]
>>> y
[('john', 'john'), ('is', 'john'), ('sleeping', 'john')]

希望这有帮助!

答案 2 :(得分:0)

您可以使用zip。我更喜欢使用python inbuilts。

k=['john']
k1=['john', 'is', 'sleeping']

zip(k1, k*len(k1))


#output:
[('john', 'john'), ('is', 'john'), ('sleeping', 'john')]