首页 > 解决方案 > 如何将此代码转换为 for 循环格式?

问题描述

我想更改此代码以使用“for”循环:

df = spark.createDataFrame([(0,prosecced_text[0]),  (1,prosecced_text[1]),.. ,(100,prosecced_text[100]) ], ["id", "items"])

100 是prosecced_text列表的长度。

标签: pythonpython-3.xpyspark

解决方案


一般来说,我会建议使用列表推导来创建类似于您需要的列表的东西,但是您需要的特定元组列表正是enumerate产生的(但我们必须enumerate通过显式构造 a来消耗输出list以获得实际清单):

df = spark.createDataFrame(list(enumerate(prosecced_text)), ["id", "items"])

什么enumerate是返回一个迭代器,它产生元组,默认情况下从(index,value)哪里index开始,并且是传递给的迭代的每个对应元素。0valueenumerate

根据@pault现已删除的评论,特定方法接受任何类型的可迭代作为其第一个参数,因此在上述特定情况下spark.createDataFrame您甚至不需要封闭调用。list如果您直接通过,它将起作用enumerate(prosecced_text)


推荐阅读