Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python将bigram列表转换为令牌列表_Python_Python 3.6 - Fatal编程技术网

如何使用Python将bigram列表转换为令牌列表

如何使用Python将bigram列表转换为令牌列表,python,python-3.6,Python,Python 3.6,我想使用Python3.6将bigram列表转换为令牌列表 我有点像: input_list = [(‘hi’, ‘my’), (‘my’, ‘name’), (‘name’, ‘is’), (‘is’, ‘x’)] 我想把这个问题转到: output_list = [‘hi’, ‘my’, ‘name’, ‘is’, ‘x’] 您可以从使用列表理解开始,将列表展平,然后获取一组: flat_list = [x for sublist in input_list for x in subli

我想使用Python3.6将bigram列表转换为令牌列表

我有点像:

input_list = [(‘hi’, ‘my’), (‘my’, ‘name’), (‘name’, ‘is’), (‘is’, ‘x’)]
我想把这个问题转到:

output_list = [‘hi’, ‘my’, ‘name’, ‘is’, ‘x’]

您可以从使用列表理解开始,将列表展平,然后获取一组:

flat_list = [x for sublist in input_list for x in sublist]
output_list = set(flat_list)
output_list

{'hi', 'is', 'my', 'name', 'x'}

如果所有输入都遵循该结构,我将提取第一个
元组的第一部分,然后从每个
元组中提取最后一个元素,即:

input_list = [("hi", "my"), ("my", "name"), ("name", "is"), ("is", "x")]
output_list = [input_list[0][0]]+[i[-1] for i in input_list]
print(output_list) # ['hi', 'my', 'name', 'is', 'x']
我使用了以下python特性:

  • 索引,
    [0][0]
    表示第一个元素的第一个元素(如果不清楚,我建议先搜索嵌套),
    [-1]
    表示最后一个元素(从末尾开始的第一个元素)
  • 列表理解,获取列表中每个元素的最后一个元素
  • 列表串联(用
    +
    表示)将两个
    列表粘在一起

如果您不想创建一个单独的列表来存储展开的值,并节省空间和避免循环,您可以尝试以下方法:

from itertools import chain
lst = [('hi', 'my'), ('my', 'name'), ('name', 'is'), ('is', 'x')]
flattened = chain(*lst)
elems = list(dict.fromkeys(flattened).keys())
print(elems)

这里的
chain(*lst)
基本上是解压元素并展平列表,并将其存储在迭代器对象中,而不是实际存储为列表。然后,您可以将它们转换为set和back,但它们可能会扰乱顺序。所以,您获取所有这些值,并尝试将它们转换为字典的键。由于字典不能有重复的键,它将只接受唯一的元素。因此,如果您获取该dict的键,您将从展平列表中获得唯一的元素。注意:保证从Python 3.7中维护顺序。

您尝试过什么,它到底有什么问题?我推荐一个Python教程: