微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我在这个列表理解问题中收到 UnboundLocalError?

如何解决为什么我在这个列表理解问题中收到 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。这是发生在微观事件中的情况:

  1. x = int(input())x 被声明并分配有用户输入。
  2. y = int(input())y 被声明并分配有用户输入。
  3. for xx 在更局部的范围内(在列表推导式中)声明,但未分配。
  4. in range(x)。迭代被定义为发生在 range(x) 的结果内。由于 x 当前未分配给任何值,因此您的 UnboundLocalError 异常发生。

正如您已经看到的,解决方案只是为迭代使用不同的变量。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。