首页 > 解决方案 > For循环不通过迭代维护顺序(Python)

问题描述

假设,for 循环应该始终通过迭代保持顺序;但是,我在 python 中运行了一个 for 循环,它应该迭代一个包含 276 个元素(文本字符串)的列表,直到元素 139,结果与初始列表的顺序相同,但它们显然是随机排序。

有谁知道为什么会发生这种情况?

编辑:

要循环的原始列表是使用以下代码从 pyspark 数据帧中获得的:

final_list = list(
df_redacted.select('id').toPandas()['id'])

for循环如下:(大部分导入都与我在循环内运行的函数有关)

from pyspark.sql import *
from pyspark.sql.functions import *
import time
from pyspark.sql.types import *
from IPython.display import display
import numpy as np
import pandas as pd
from pandas.tseries.frequencies import to_offset
from datetime import timedelta

results = []
for x in final_list: 
    aux = df_complete.filter("id = '%s'" % x) 
    final= function(aux,"value") 
    results.append(final)
result

标签: pythonpandasfor-looppysparkiteration

解决方案


for-look 以固定顺序迭代。必须发生的是select()查询以不确定的顺序提供结果。您可以通过交互式输入 python(或添加一些诊断代码)来自己确认这一点,以从列表的不同部分打印一个“切片”值。

例如

from pprint import pprint

pprint(final_list[139:150])

执行几次,你会看到 for 循环只打印了那里的内容。


推荐阅读