19/4/9-python-传值,传地址与list嵌套

传值和传地址

传值就是传入一个值的参数 传地址是传入一个参数的地址,也就是内存的地址。他们俩的区别就是函数里面对传入的参数重新赋值,函数外的全局变量是否发生改变,用传值的传入的参数不会被改变,但是传地址会。

a=1
def f(b):
    b=2
f(a)
print a

如果a输出的是1,那么就代表是传值,反之是传地址。
Python是不允许程序员选择采用传值还是传址的。python的传值和传址是根据传入参数的类型来选择的。

传值的参数类型:数字,字符串,元组
传址的参数类型:列表,字典

a=1
def f(a):
    a+=1
f(a)
print a

这段代码里,由于a数字类型,所以是传值的类型,a的值不会变,所以还是1

a=[1]
def f(a):
    a[0]+=1
f(a)
print a

此时这段代码,a就是列表类型,所以是传地址的类型,a[0]的值就为2

https://www.cnblogs.com/Xjng/p/3829368.html 具体详情可参考这个网址

list嵌套生成式

a = [i for i in range(1,4)]
b = [j for j in range(100,400) if j % 100 == 0]
print(a)
print(b)
# 此时我们首先生成两个列表a和b,其中b利用条件表达式来生成出我们想要的结果

上面两个列表就为a和b列表
上面两个列表就为a和b列表

c = [m+n for m in a for n in b]
print(c)

for m in a:
    for n in b:
        print(m+n,end="  ")
#让我们来看看二者产生的值有什么区别

在这里插入图片描述
除了第一种产生的类型是列表,第二种是数字类型之外,它们的具体数值都是相同的。
所以c这个循环列表嵌套相当于两个m,n的for循环

# 嵌套循环中条件表达式也可以用
d = [m+n for m in a for n in b if m+n < 250]
print(d)

在这里插入图片描述
根据我们的条件if<250,生成列表里面的值都小于250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值