可以将他看成一个双重for循环,只不过有一个列表的转换
我们先看一个简单的
[[i for i in range(0,19)]for j in range(0,3)]
等价于:
>>> for i in range(0,3):
for j in range(0,19):
print(j)
只是有点不太同的是前面的有一个强制转换成列表的功能
[[i for i in range(0,19)]for j in range(0,3)]
怎么理解前面的那一段代码呢,就是从后往前读
先让 j = 0 循环一次;进入第二层循环让i在0-19循环一次,转换成【】,列表
再让 j= 1 循环一次,进入第二层循环让i在0-19循环一次,转换成【】,列表
最后 j= 2 循环一次,进入第二层循环让i在0-19循环一次,转换成【】,列表
现在来说重头戏了
就是这个应该怎么看:
texts=
[[word for word in document.split()]for document in documents]
首先先不看texts 大不了就是一个赋值的过程
来看今天的重头戏
[[word for word in document.split()]for document in documents]
先看后面:
for document in documents
我们假如documents里面的数据有两个分别是data1 和data2
documents [ data1 , data2 ]
再来看:
[[word for word in document.split()]for document in documents]
首先在 documents中外层循环:
先循环data1, 再在 for word in document.split()
中循环完
再循环data2,再在 for word in document.split()
中循环完
注意的是,由于document在变化,所以,document.split() 也在变。
我有一篇文章有专门讲document.split() 等函数的,不懂的可以去看看