我得到了以下列表数组。
[array(['I', '1', 'am', '1', 'a', '1', 'boy', '3']) array(['I', '1', 'am', 'a', 'girl', '1']) array(['I', '1', 'am', '1', 'non-binary', '2'])
我想写一个python代码,将数组转换成一个语料库,其中文本乘以数字,即,格式如下:
corpus = [ "I am a boy boy boy", "I am a girl", "I am non-binary non-binary]
我如何在Python上实现这一点?任何帮助都将不胜感激。
发布于 2021-05-23 02:12:48
尝试以下操作:
data = [['I', '1', 'am', '1', 'a', '1', 'boy', '3'], ['I', '1', 'am', '1', 'a', '1', 'girl', '1'], ['I', '1', 'am', '1', 'non-binary', '2']]
def stringify(lst): # function: convert list into str with the words repeated
repeated = [' '.join([lst[i]] * int(lst[i + 1])) for i in range(0, len(lst), 2)]
return ' '.join(repeated)
output = [stringify(x) for x in data] # apply the function for each item
print(output) # ['I am a boy boy boy', 'I am a girl', 'I am non-binary non-binary']这一次基本上是重复应用列表理解和join方法。
发布于 2021-05-23 02:44:25
这是我想出来的。
def corpus(list):
s = []
for x in range(len(list)):
if not list[x].isdigit():
if (x != len(list)-1) and (list[x+1].isdigit()):
for num in range(int(list[x+1])):
s.append(list[x])
else:
s.append(list[x])
return ' '.join(s)这应该检查列表的每个索引后面是否有一个数字,并返回索引乘以其中包含必要空格的数字。对不起,如果它是笨重的,我试着让它快。如果您需要澄清if/else语句,请让我知道。
编辑:我在这上面花了一些额外的时间,这样代码就不会那么笨拙了。我们使用‘'.join()在每个条目之间添加空格,而不是每次都在字符串中添加一个空格,然后针对最后一次添加进行调整。将其应用于您提供的列表将产生以下结果
a = [['I', '1', 'am', '1', 'a', '1', 'boy', '3'],
['I', '1', 'am', 'a', 'girl', '1'],
['I', '1', 'am', '1', 'non-binary', '2']]
print(list(map(corpus,a)))
['I am a boy boy boy', 'I am a girl', 'I am non-binary non-binary']发布于 2021-05-23 02:45:41
您可以使用列表理解来获取所有单词,然后使用另一个列表理解来“扁平化”列表。
data = [['I', '1', 'am', '1', 'a', '1', 'boy', '3'],
['I', '1', 'am', '1', 'a', '1', 'girl', '1'],
['I', '1', 'am', '1', 'non-binary', '2']]
corpus = [[word]*int(sentence[pos+1]) for sentence in data for pos, word in enumerate(sentence) if pos % 2 == 0]
corpus = [word for words in corpus for word in words]
print(corpus)
""" OUTPUT
['I', 'am', 'a', 'boy', 'boy', 'boy', 'I', 'am', 'a', 'girl', 'I', 'am', 'non-binary', 'non-binary']
"""https://stackoverflow.com/questions/67652524
复制相似问题