带有 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 语句的 while 循环的 Big-O 运行时