python列表中“+”运算符和append区别

1、Python列表作为一般的变量(非函数参数) + 与 append作用基本一致:在后面添加一个元素

>>> L = [1,2]
>>> L = L + [3]
>>> L
[1, 2, 3]
>>> L.append(4)
>>> L
[1, 2, 3, 4]
>>>

2、Python列表 作为函数参数,且有默认值情况下, + 与append 表现有所差异:

1)+ 不会累积之前往列表添加的元素:

>>> def fun(i, L = []):  # + operator test
...     L = L + [i]
...     return L
...
>>> fun(1)
[1]
>>> fun(2)
[2]
>>> fun(3)
[3]
>>>

2)append  会累积之前往列表里添加的元素:

>>> def fun2(i, L = []): # append test
...     L.append(i)
...     return L
...
>>> fun2(1)
[1]
>>> fun2(2)
[1, 2]
>>> fun2(3)
[1, 2, 3]
>>>

3)可以通过适当的添加判断赋值操作,让 append也不会累积之前添加的元素:

>>> def fun3(i, L = []): # modified append test
...     if L == []:
...             L = []
...     L.append(i)
...     return L
...
>>> fun3(1)
[1]
>>> fun3(2)
[2]
>>> fun3(3)
[3]
>>>

Ps: Python函数参数的默认值一般情况下,只被赋值一次,在可变的对象变量:如列表、字典、某些类对象实例,会有不同:
1)一般情况下变量,默认值在函数定义的作用域内被解析,只赋值一次:

>>> i = 5

>>> def fun(arg = i):
...     print(arg,i)
...
>>> fun()
5 5
>>> i = 6
>>> fun()
5 6
>>> i = 7
>>> fun()
5 7
>>>

2)对于列表可变对象等情况,则如上讨论的在会出现不同的情况:




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值