当前位置: 首页 > 工具软件 > Texts > 使用案例 >

texts=[[word for word in document.split()]for document in documents] 的形式是什么意思?

秦俊
2023-12-01

texts=[[word for word in document.split()]for document in documents]

可以将他看成一个双重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() 等函数的,不懂的可以去看看

 类似资料: