我正在尝试利用列表推导来填充新列表,这就是DataFrame列中文本的长度。
因此,如果文本是“电气工程师”,则应输出19等。相反,它只是用None值填充列表
我在下面写出了列表理解
all_text_length = [all_text_length.append(len(i)) for i in data['all_text']]
期望整数输出,但不输出
作为一种解决方法,我目前正在(成功)使用
[all_text_length.append(len(i)) for i in data['all_text']]```
答案 0 :(得分:1)
阅读append
上的文档:它可以就地工作。没有返回值。你写的基本上是
all_text_length = [None for i in data['all_text']]
您似乎正在尝试通过列表理解来完全更改列表。试试这个:
all_text_length = [len(i) for i in data['all_text']]
如果只需要方便的形式的长度,是否可以形成新的列?只需将len
应用于df列即可。
答案 1 :(得分:1)
您正在尝试将列表理解追加到相同的列表。由于附加返回的是None类型,因此您将获得None。下面的代码应该可以工作,
all_text_length = map(len, data['all_text'])
map
是一个函数,该函数采用另一个函数(第一个参数)并将其应用于可迭代(第二个参数)中的每个元素,并返回结果列表。
答案 2 :(得分:1)
列表理解中“ for”语句之前的值将添加到列表中。如果您在其中放置声明,例如
all_text_length.append(len(i)
,将添加该功能的 return 值。由于 .append()中没有 return 语句,因此您将得到值None作为 return 类型,这将添加到您的列表。
使用推荐的代码@Prune,它应该可以根据需要工作。