传值和传地址
传值就是传入一个值的参数 传地址是传入一个参数的地址,也就是内存的地址。他们俩的区别就是函数里面对传入的参数重新赋值,函数外的全局变量是否发生改变,用传值的传入的参数不会被改变,但是传地址会。
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列表
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