为了账号安全,请及时绑定邮箱和手机立即绑定

解释嵌套列表理解是如何工作的?

解释嵌套列表理解是如何工作的?

斯蒂芬大帝 2019-06-24 09:25:08
解释嵌套列表理解是如何工作的?我明白这一点是没有问题的:a = [1,2,3,4]b = [x for x in a]我以为仅此而已,但后来我发现了这个片段:a = [[1,2],[3,4],[5,6]]b = [x for xs in a for x in xs]这使得b = [1,2,3,4,5,6]..问题是我很难理解[x for xs in a for x in xs]有人能解释一下它的工作原理吗?
查看完整描述

3 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

啊,难以理解的“嵌套”理解。循环以与理解相同的顺序展开。

[leaf for branch in tree for leaf in branch]

这样想是有帮助的。

for branch in tree:
    for leaf in branch:
        yield leaf

这个PEP 202断言“最后一个索引变化最快”的语法是“正确的”,特别是没有解释为什么.


查看完整回答
反对 回复 2019-06-24
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

如果a = [[1,2],[3,4],[5,6]],如果我们打开这个列表,我们就会得到:

      +----------------a------------------+ 
      | +--xs---+ , +--xs---+ , +--xs---+ | for xs in a      | | x , x |   | x , x |   | x , x | | for x in xs
a  =  [ [ 1 , 2 ] , [ 3 , 4 ] , [ 5 , 6 ] ]b  =  [ x for xs in a for x in xs ] == [1,2,3,4,5,6] #a list of just the "x"s


查看完整回答
反对 回复 2019-06-24
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

b = [x for xs in a for x in xs]类似于下面的嵌套循环。

b = []for xs in a:
   for x in xs:
       b.append(x)


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 555 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信