python - 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
解决方案
for-look 以固定顺序迭代。必须发生的是select()
查询以不确定的顺序提供结果。您可以通过交互式输入 python(或添加一些诊断代码)来自己确认这一点,以从列表的不同部分打印一个“切片”值。
例如
from pprint import pprint
pprint(final_list[139:150])
执行几次,你会看到 for 循环只打印了那里的内容。
推荐阅读
- imagemagick - 如何在带有 imagemagick 的脚本中使用 pango
- amazon-web-services - 从本地机器连接到 aws 远程 mariadb 服务器
- java - Flink SQL:在 GROUP BY 查询的结果中重复分组键
- wikipedia - 如何发送维基百科页面的地址而不是完整页面?
- eclipse - 黄瓜硒 Java Eclipse
- javascript - 正则表达式匹配不被引号包围的 URL
- dialogflow-es - DialogFlow V2 文本查询配额
- listview - 如何为选定的 ListItem onTap 着色
- javascript - window.location.href 未在 Edge 中显示内容
- java - 缺少 Java Struts 2.5.17 LocalizedTextUtil 类