带有 if 语句意外结果的 Python 嵌套循环

Posted

技术标签:

【中文标题】带有 if 语句意外结果的 Python 嵌套循环【英文标题】:Python nested loops with if statements unexpected result 【发布时间】:2015-03-04 11:07:26 【问题描述】:

我试图弄清楚为什么这段代码的执行与我的预期不同。 代码是:

for i1 in [xrange(567)]:
    W = x1[i1]
    Z = y[i1]
    ZW = np.array([z * (1/w) for z, w in zip(Z,W)])
    for j1 in [xrange(567)]:
        if j1 != i1:
            E1 = np.array([z - zw * w for z, zw, w in zip(Z,ZW,W)])

其中 x1 是 (566,1) 数组,y 是 .csv 文件中的 (566,2) 数组。 现在我认为声明 if j1 != i1: 不能正常工作,因为如果我尝试更简单的模式:

for i in [range(567)]:
    for j in [range(567)]:
        if i != j:
            print i
            print j

没有返回

【问题讨论】:

请正确格式化您的代码。 请添加完整代码、您所期望的以及当前输出是什么。 语句[xrange(567)] 创建了一个带有生成器的列表,因为它是唯一的项目。我猜你想迭代数字。然后你将不得不删除括号。 这是一个错误,我不是故意要编辑不完整的代码 只是为了强调@KlausD.,您应该使用for i1 in xrange(567): 进行迭代(不要将其放在列表中)。 【参考方案1】:

您的代码需要修改:

for i in range(567):
    for j in range(567):
        # do something here.

正如评论者所提到的,请在 for 循环行中省略方括号。

【讨论】:

以上是关于带有 if 语句意外结果的 Python 嵌套循环的主要内容,如果未能解决你的问题,请参考以下文章

带有字典、列表和 If 语句的嵌套循环

python中为啥我的for循环里嵌套的if只能循环一次?

带有嵌套 if 语句的 while 循环的 Big-O 运行时

shell 编程 里面 if 嵌套 for 语句的匪夷所思的 事情!!

Python:在“while”循环中嵌套“If”语句?

Python基础之if判断,while循环,循环嵌套