1.实现两个list的相加
方法一:
L1=[1,2,3,4]
L2=[5,6,7,8]
for x in L2:
L1.append(x)
- 不需要新建立一个空的L,直接在L1基础上相加
- for x in L2,x 表示的就是元素,而不是索引,因此不可以写成append(L2(x))
方法二:
L1=[1,2,3,4]
L2=[5,6,7,8]
L1.extend(L2)
#L=L1.extend(L2) 错误写法:L1.extend()是一个函数,这个函数没有返回值,因此返回的结果是None,但是L1的集合确实改变了
L=L1.extend(L2) 错误写法:L1.extend()是一个函数,该函数是没有return,没有return的默认返回none--重点!!
2.关于传值和传地址的区别
L1=[1,2,3,4]
L2=[5,6,7,8]
L3=L1
L3.extend(L2)
#L3只传了地址,只是加了标签,未创建新的地址
L4=[]
for x in L1:
L4.append(x)
L4.extend(L2)
#L4建了新的地址,在新的地址复制了值
L1=[1, 2, 3, 4, 5, 6, 7, 8]
L2=[5, 6, 7, 8]
L3=[1, 2, 3, 4, 5, 6, 7, 8]
L4=[1, 2, 3, 4, 5, 6, 7, 8, 5, 6, 7, 8]
- L3=L1的操作,将L1的地址出传递给了L3,未建立新的地址,所以L1的集合元素也发生了变化
- L4是建立了新的地址,L2将数值传递给了L4,所以L2并没有因为L4的改变而改变
3.将整数变成字符串以及字符串相加
age=30
income=30000.99
print('age:',age)
#这里面的逗号,在python里面默认为空格,但是有的时候我们不需要空格,变换方法
#需要加逗号的原因是,print()这个函数里面,有不同的变量类型语法规定是‘,’
s_age=str(age)
s_income=str(income)
#将整数转变为字符串
print('我的年龄是'+s_age+',我的收入是'+s_income)
#记住:两个字符串的相加方法s=s_age+s_income
#不可以用append or extend之类的
print('我的年龄是'+'s_age+'+',我的收入是'+'s_income')
#将s_age用''括起来之后,就变成了s_age字符串
#结果为age: 30
#我的年龄是30,我的收入是30000.99
#我的年龄是s_age+,我的收入是s_income
4.函数中,关于什么时候必须return什么时候可以不return
【1】必须return
实现L1并不变,但是输出的是变化的L1
#实现L1并不变,但是输出的是变化的L1
def myReplace(L1):
L2=[]
for x in L1:
L2.append(x)
L2[0]=1
return L2
# 必须returnL2;不改变input,必须output;如果不returnL2,L2被湮灭
【2】不必return
实现将L1改变
def myReplacenew(L1):
L1[0]=1
# 没有return,合法;作用change input的东西,没有output
L_input=[7,8,9]
myReplacenew(L_input)
5.可变对象和不可变对象
注解:1.str是不可变对象,a.replace是传值,也就是建立了新的地址,将值传了进去,所以生成的b和原来的a不一样
这种基础的数据类型,str,int都是不可变对象,传的都是值,建立了新地址
用代码实现就是:
a='xyz'
b=a
a='Xyz'
print(a)
#Xyz
print(b)
#xyz
2.而list是复杂的数据类型,传的是地址
如:上例子中的L1=L0,L1[0]=3,输出结果L0[0]也变成了3,以为L1没有产生新的地址,L0将自己地址复制给了L1