设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 10251|回复: 2
打印 上一主题 下一主题

大神请进!函数执行顺序的问题!困扰很久了!

[复制链接]

6

主题

0

好友

116

积分

注册会员

Rank: 2

跳转到指定楼层
楼主
发表于 2018-10-24 22:06:21 |显示全部楼层 |倒序浏览
第一个:
li = [x for x in range(3)]
print(li)

li1 = []
for ii in range(3):
    li2 = []
    for i in li:
        li2.append(i)
    li1.append(li2)
print(li1)
output : [0, 1, 2][[0, 1, 2], [0, 1, 2], [0, 1, 2]] 非常清晰
第二个
li = [x for x in range(3)]
print(li)

li1 = []
for ii in range(3):
    li2 = []
    for i in li:
        li2.append(i)
        li1.append(li2)
print(li1)
outpu:[0, 1, 2][[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]
我想象中的输出应该是: [[0, ], [0, 1, ], [0, 1,2], [0,], [0, 1,], [0, 1, 2], [0,], [0, 1,], [0, 1, 2]]请问为什么 li1.append(li2)  这条命令是在li2 变成 [0, 1, 2] 之后才开始执行的呢?

回复

使用道具 举报

6

主题

0

好友

116

积分

注册会员

Rank: 2

沙发
发表于 2018-11-6 00:53:41 |显示全部楼层
谢谢老师!
回复

使用道具 举报

6

主题

0

好友

116

积分

注册会员

Rank: 2

板凳
发表于 2018-11-6 01:39:33 |显示全部楼层
crossin先生 发表于 2018-10-26 00:59
因为你添加的是 li2 这个引用。
并不是执行顺序的问题,你把print加到你append的位置,一样可以看到变化

crossin 老师, 不知道我这样理解是不是对的: li1.append(li2)之中的li2只是一个标签,它的对象从[0] 变到 [0, 1] 到[0, 1, 2], 所以每轮循环最终[li2, li2, li2] 就变成3个[0, 1, 2]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-3 03:55 , Processed in 0.027829 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部