(我希望这不是一个重复,但其他问题太多而且命名不好,如果是这样的话......)
(在Python中测试> 3,解决方案 - 如果有的话 - 必须在> = 2.7下工作)
假设我们有一个清单:
class MyUser(AbstractBaseUser):
...
...
def has_perm(self, perm, obj=None):
return self.is_superuser
def has_module_perms(self, app_label):
return self.is_superuser
我们尝试使用标准列表推导方法将其展平:
l = [[1,2], [3,4], [5,6]]
输出:
[v for sl in l for v in sl] == [1,2,3,4,5,6]
然后我们尝试:
True
导致:
[(v, s1[0]) for sl in l for v in sl]
为什么会这样?
因为for循环被评估为循环,所以isn&#t; t NameError: name 's1' is not defined
应该是可访问的,因为循环应该被评估为:
s1
或换句话说:
[<expression> for <outer> in <list> for <inner> in <outer>]
我错过了什么?
答案 0 :(得分:2)
看来你混淆了名字sl
(“ess-ell”)和s1
(“ess-one”)。
作为附录,您应该考虑切换到特定于程序员的字体,该字体强调其他潜在模糊字符之间的差异。一个流行的选项是Source Code Pro。