文章

语法糖&生成表达式(Python)

文章目录
#第一段,语法糖

l = [i for i in range(10)]
print(l)
#接下来,一般的写法是如下的

l = []
for i in range(10):
    l.append(i)
print(l)

以上两种方法都是一样的,但是第一段语法糖明显更简单
列表是上面这样加的,那么字典其实也一样,可以像下面这样生成

d = {i:i+10 for i in range(10)}

d = {}
for i in range(10):
    d[i] = i+10

可是接下来是一个很特别的地方,上面我们是中括号和大括号,可是如果使用小括号就不行了哟!可是接下来是一个很特别的地方,上面我们是中括号和大括号,可是如果使用小括号就不行了哟!

使用小括号,返回的是生成器,当你print出来的时候,其实是显示一段内存地址的,他无法直接打印就获得内部的值。这里就需要调用next()方法,或者使用for循环.

其实for循环的本质就是调用next方法哦!

a = (i for i in range(10))
#这里会返回生成器哦,不会返回内部的值哦!
print(a)#打印的是一个内存地址哦
print(f'next:{a.__next__()}')#这样才可以哦!
#如上,使用__next__()方法获得生成器内的值,他会获得生成的第一个值,也就是0
#并且在获得0之后,生成器里就没有0了,也就是说,你获得了,我就给你了,我不要了!
#或者如下这样循环打印
print('然后循环打印试试,我们没有了第一个数字0')
for i in a:
    print(i)
原文来自:语法糖&生成表达式(Python),尊重自己,尊重每一个人;转发请注明来源!
0 0

发表评论