Python 如何将列表数组转换为字符串集合,并将字符串乘以数字(提供的示例)
我得到了以下列表数组Python 如何将列表数组转换为字符串集合,并将字符串乘以数字(提供的示例),python,string,list,repeat,Python,String,List,Repeat,我得到了以下列表数组 [数组(['I','1','am','1','a','1','boy','3'])数组(['I','1','am','a','girl','1'])数组(['I','1','am','1','non-binary','2']) 我想编写一个python代码,将数组转换为语料库,其中文本乘以数字,即以下格式: corpus=[“我是男孩”、“我是女孩”、“我不是二进制的非二进制的” 我如何在Python上实现这一点?非常感谢您的帮助。请尝试以下方法: my_list = [
[数组(['I','1','am','1','a','1','boy','3'])数组(['I','1','am','a','girl','1'])数组(['I','1','am','1','non-binary','2'])
我想编写一个python代码,将数组转换为语料库,其中文本乘以数字,即以下格式:
corpus=[“我是男孩”、“我是女孩”、“我不是二进制的非二进制的”
我如何在Python上实现这一点?非常感谢您的帮助。请尝试以下方法:
my_list = [
['I', '1', 'am', '1', 'a', '1', 'boy', '3'],
['I', '1', 'am', '1', 'a', '1', 'girl', '1'],
['I', '1', 'am', '1', 'non-binary', '2']
]
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):#函数:将列表转换为重复单词的str
重复=[''.join([lst[i]]*int(lst[i+1])表示范围(0,len(lst),2)内的i)
返回“”。加入(重复)
输出=[stringify(x)for x in data]#为每个项应用函数
打印(输出)#[‘我是男孩’、‘我是女孩’、‘我是非二进制非二进制’]
这一个基本上是重复应用列表理解和
join
方法。以下是我的想法
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']
您可以使用列表理解来获取所有单词,然后使用另一个列表理解来“展平”列表
data=[['I','1','am','1','a','1','boy','3'],
['I','1','am','1','a','1','girl','1'],
['I','1','am','1','non-binary','2']]
语料库=[[word]*int(句子[pos+1])表示pos数据中的句子,如果pos%2==0,则表示枚举(句子)中的单词
语料库=[语料库中的逐字逐句]
印刷品(语料库)
“”“输出
[‘我’、‘是’、‘a’、‘男孩’、‘男孩’、‘我’、‘是’、‘a’、‘女孩’、‘我’、‘是’、‘非二进制’、‘非二进制’]
"""
通过zip的一个选项:
l = [['I', '1', 'am', '1', 'a', '1', 'boy', '3'], ['I', '1', 'am', '1', 'a', '1', 'girl', '1'], ['I', '1', 'am', '1', 'non-binary', '2']]
result = [' '.join((' '.join([x] * int(y))) for x,y in zip(i[::2], i[1::2])) for i in l]
输出
:
['I am a boy boy boy', 'I am a girl', 'I am non-binary non-binary']
您的数据存在一些问题:
未定义数组
)
,但结尾没有(
)my_list = [
['I', '1', 'am', '1', 'a', '1', 'boy', '3'],
['I', '1', 'am', '1', 'a', '1', 'girl', '1'],
['I', '1', 'am', '1', 'non-binary', '2']
]
给定此输入,以下代码将起作用:
[
" ".join([" ".join([word]*int(count))
for word, count in zip(sublist[::2],sublist[1::2])])
for sublist in my_list
]
你运行了你的代码吗?@accumulation添加了初始列表
l
你可以运行,如果我遗漏了什么,请告诉我。这个解决方案适合我。非常感谢你的回复。