如何解决为什么我在这个列表理解问题中收到 UnboundLocalError?
x = int(input())
y = int(input())
print([[x,y] for x in range(x) for y in range(y)])
以上,每当我使用迭代器变量作为 x 和 y,'它显示一个错误'
但是当我将其更改为 a 和 b 时,'它工作正常'见下文
x = int(input())
y = int(input())
print([[a,b] for a in range(x) for b in range(y)]) #this is working fine
谁能告诉我 UnboundLocalError
背后的原因?
解决方法
问题在于您在列表理解中“重新声明”了 x
。这是发生在微观事件中的情况:
-
x = int(input())
。x
被声明并分配有用户输入。 -
y = int(input())
。y
被声明并分配有用户输入。 -
for x
。x
在更局部的范围内(在列表推导式中)声明,但未分配。 -
in range(x)
。迭代被定义为发生在range(x)
的结果内。由于x
当前未分配给任何值,因此您的UnboundLocalError
异常发生。
正如您已经看到的,解决方案只是为迭代使用不同的变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。