我在理解嵌套列表理解结构时遇到问题。你知道吗
我有一张单子
>>> test
[[1, 2, 3], [4, 5], [6, 7, 8]]
如果我这样做了
t2=[]
for x in test:
for y in x:
t2.append(y)
然后它就回来了
>>> t2
[1, 2, 3, 4, 5, 6, 7, 8]
这正是我想要的。但为什么我不能呢
t3=[y for y in x for x in test]
这让我
>>> t3
[6, 6, 6, 7, 7, 7, 8, 8, 8]
有人能解释为什么t3和t2不一样吗?我怎样才能写出一个列表理解表达式,让我得到与t2相同的结果呢?非常感谢你的帮助!你知道吗
您需要反转
for
循环:否则(如果事先没有运行多行版本!)
x
未定义。您的代码只是侥幸运行的-x
仍然是上一个for
循环结束时的状态,因此您的结果是正确的。你知道吗在代码中,在开始之前,
x = [6, 7, 8]
来自上一个循环(jonsharpe指出)。你知道吗因此,它是这样展开的:
第一个循环中的
x
指向[6, 7, 8]
,然后重新分配,但这不会更改第一个循环中使用的引用。如果第二个x
有一个不同的名称,结果将是相同的。你知道吗列表理解中的
for ... in ...
子句需要按照相同的顺序排列,就像它们对于循环是正常的一样:相关问题 更多 >
编程相关推荐