Я пытался написать код для токенизации строк в python для некоторого НЛП и придумал этот код:
str = ['I am Batman.','I loved the tea.','I will never go to that mall again!']
s= []
a=0
for line in str:
s.append([])
s[a].append(line.split())
a+=1
print(s)
выход получился:
[[['I', 'am', 'Batman.']], [['I', 'loved', 'the', 'tea.']], [['I', 'will', 'never', 'go', 'to', 'that', 'mall', 'again!']]]
Как видите, в списке теперь есть дополнительное измерение, например, если я хочу слово «Бэтмен», мне нужно будет ввести s[0][0][2]
вместо s[0][2]
, поэтому я изменил код на:
str = ['I am Batman.','I loved the tea.','I will never go to that mall again!']
s= []
a=0
m = []
for line in str:
s.append([])
m=(line.split())
for word in m:
s[a].append(word)
a += 1
print(s)
, который дал мне правильный вывод:
[['I', 'am', 'Batman.'], ['I', 'loved', 'the', 'tea.'], ['I', 'will', 'never', 'go', 'to', 'that', 'mall', 'again!']]
Но у меня такое чувство, что это может работать с одним циклом, потому что набор данных, который я буду импортировать, будет довольно большим, а сложность n
будет намного лучше, чем n^2
, поэтому есть лучший способ сделать это / способ сделать это с одним циклом?