输出无而不是值

时间:2019-05-15 16:12:32

标签: python list-comprehension

我正在尝试利用列表推导来填充新列表,这就是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']]```

3 个答案:

答案 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,它应该可以根据需要工作。