Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 试图理解为什么嵌套for循环只在第一次调用_Python_Python 3.x_For Loop_Nested Loops_Kaggle - Fatal编程技术网

Python 试图理解为什么嵌套for循环只在第一次调用

Python 试图理解为什么嵌套for循环只在第一次调用,python,python-3.x,for-loop,nested-loops,kaggle,Python,Python 3.x,For Loop,Nested Loops,Kaggle,我有以下代码: def get_preds(train,test,x_ranges,y_ranges): global total_scores global num_scores for x_min, x_max in x_ranges: for y_min, y_max in y_ranges: ... 当我在Python2.7上运行此方法时,它的行为与预期的一样。每次外部for循环运行时,都会运行嵌套for循环 当我将相同的代码

我有以下代码:

def get_preds(train,test,x_ranges,y_ranges):
    global total_scores
    global num_scores
    for x_min, x_max in x_ranges:
       for y_min, y_max in y_ranges:
           ...
当我在Python2.7上运行此方法时,它的行为与预期的一样。每次外部for循环运行时,都会运行嵌套for循环

当我将相同的代码加载到运行在Python3上的Kaggle python脚本引擎时,嵌套循环只运行一次。对于所有其他迭代,将跳过它

下面是调用该方法的方式:

dataset = pd.read_csv('../input/train.csv',dtype=types,index_col=0)
split_t=math.floor((0.9)*786239)

train = dataset[dataset.time < split_t]
test = dataset[dataset.time >= split_t]


def gen_ranges(size,step):
    return zip(np.arange(0,size,step), np.arange(step, size+step, step));

x_ranges = gen_ranges(size,x_step)
y_ranges = gen_ranges(size,y_step)

preds_test_total = get_preds(train,test,x_ranges,y_ranges)
dataset=pd.read\u csv('../input/train.csv',dtype=types,index\u col=0)
拆分=数学楼层((0.9)*786239)
列车=数据集[dataset.time=拆分]
def gen_范围(大小、步长):
返回拉链(np.arange(0,大小,步长),np.arange(步长,大小+步长,步长));
x_范围=gen_范围(尺寸、x_步长)
y_范围=gen_范围(大小,y_步长)
preds\u test\u total=获取preds(训练、测试、x\u范围、y\u范围)

在Python 3中,返回一个迭代器。只能对迭代器的元素迭代一次。要复制Python 2的行为,请使用
list(zip(…)
代替
zip(…)

如何调用该函数?preds\u test\u total=get\u preds(train,test,x\u ranges,y\u ranges)在任何方法之外。如何调用该函数?特别是,
yranges
在两个解释器中都是一个列表,或者在Python2中是一个列表,在Python3中是一个生成器?是的,zip在Python3中返回一个迭代器,而不是在Python2中返回一个列表,这意味着这是Larry的重复,imho您应该删除完整的函数列表,也许还有缩进备注。如果你遵循这个建议,你的问题会更容易阅读,也更容易被人投票(至少是我…),