Python: NLTK: 访问列表列表的元素
Python: NLTK: access element of list of list
我有以下列表,作为标记化后的结果:
[['Who', 'are', 'you', '?'],
['I', 'do', 'not', 'know', 'who', 'you', 'are'],
['What', 'is', 'your', 'name', '?']]
现在我想要一个包含 "simple" 元素的列表,例如:
['Who','are','you','?','I','do','not','know','who'...]
我已经尝试了所有我能想到的方法,使用(嵌套)for 循环、(嵌套)while 循环...我要么得到列表 ['Who','Who','Who',...]
(等等),要么得到 "list index out of range"
.
有人可以帮帮我吗?谢谢!
您可以只使用 extend python
中的函数
In [1]: a= [['Who', 'are', 'you', '?'], ['I', 'do', 'not', 'know', 'who', 'you', 'are'], ['What', 'is', 'your', 'name', '?']]
In [2]: b = []
In [3]: for list_ in a:
b.extend(list_)
...:
In [4]: b
Out[4]: ['Who','are','you','?','I','do', ...]
是否要合并列表?
flat_list = []
for list_item in nested_list:
flat_list += list_item
>>flat_list
>>['Who', 'are', 'you', '?', 'I', 'do', 'not', 'know', 'who', 'you', 'are', 'What', 'is', 'your', 'name', '?']
可以查看可能的重复项here
你可以试试这个
Python >=2.6,使用不需要解包列表的itertools.chain.from_iterable()
:
>>> import itertools
>>> list2d = [["who", "are", "you", "?"]....]
>>> merged = list(itertools.chain.from_iterable(list2d))
只是为了在看到其他答案时记录下来,更pythonic的方法是使用nested list comprehension,像这样:
original_list = [[1], [2, 3]]
flat_list = [i for sublist in original_list for i in sublist]
我有以下列表,作为标记化后的结果:
[['Who', 'are', 'you', '?'],
['I', 'do', 'not', 'know', 'who', 'you', 'are'],
['What', 'is', 'your', 'name', '?']]
现在我想要一个包含 "simple" 元素的列表,例如:
['Who','are','you','?','I','do','not','know','who'...]
我已经尝试了所有我能想到的方法,使用(嵌套)for 循环、(嵌套)while 循环...我要么得到列表 ['Who','Who','Who',...]
(等等),要么得到 "list index out of range"
.
有人可以帮帮我吗?谢谢!
您可以只使用 extend python
中的函数In [1]: a= [['Who', 'are', 'you', '?'], ['I', 'do', 'not', 'know', 'who', 'you', 'are'], ['What', 'is', 'your', 'name', '?']]
In [2]: b = []
In [3]: for list_ in a:
b.extend(list_)
...:
In [4]: b
Out[4]: ['Who','are','you','?','I','do', ...]
是否要合并列表?
flat_list = []
for list_item in nested_list:
flat_list += list_item
>>flat_list
>>['Who', 'are', 'you', '?', 'I', 'do', 'not', 'know', 'who', 'you', 'are', 'What', 'is', 'your', 'name', '?']
可以查看可能的重复项here
你可以试试这个
Python >=2.6,使用不需要解包列表的itertools.chain.from_iterable()
:
>>> import itertools
>>> list2d = [["who", "are", "you", "?"]....]
>>> merged = list(itertools.chain.from_iterable(list2d))
只是为了在看到其他答案时记录下来,更pythonic的方法是使用nested list comprehension,像这样:
original_list = [[1], [2, 3]]
flat_list = [i for sublist in original_list for i in sublist]