• 【列表添加元素】详解python中列表添加元素的几种方式(+、append()、extend())


    1、使用+加号

    +加号是将两个list列表相加,返回一个新的列表对象,会消耗额外的内存。

    1. #!/usr/bin/env python
    2. # -*- coding:utf-8 -*-
    3. if __name__ == '__main__':
    4. a = [1, 2, 3]
    5. b = [4, 5, 6]
    6. c = a + b
    7. print(c)

    输出:

    1. [1, 2, 3, 4, 5, 6]
    2. Process finished with exit code 0

    2、使用append()方法

    append()方法在列表的末尾添加新的对象,该方法无返回值,但是会修改原来的列表。

    语法:list.append(obj)

    参数:obj – 添加到列表末尾的对象。

    1. #!/usr/bin/env python
    2. # -*- coding:utf-8 -*-
    3. if __name__ == '__main__':
    4. a = [1, 2, 3]
    5. b = [4, 5, 6]
    6. a.append(b)
    7. print(a)

    输出:

    1. [1, 2, 3, [4, 5, 6]]
    2. Process finished with exit code 0

    3、使用extend()方法

    extend()方法用新列表扩展原来的列表,会把对象迭代添加到列表后面,只支持可迭代对象的数据。(可迭代对象: 能用for循环进行迭代的对象就是可迭代对象, 比如:字符串,列表,元组,字典,集合等等)

    该方法没有返回值,但会在已存在的列表中添加新的列表内容。

    语法:list.extend(seq)

    参数:seq – 元素列表。

    1. #!/usr/bin/env python
    2. # -*- coding:utf-8 -*-
    3. if __name__ == '__main__':
    4. a = [1, 2, 3]
    5. b = [4, 5, 6]
    6. a.extend(b)
    7. print(a)

    输出:

    1. [1, 2, 3, 4, 5, 6]
    2. Process finished with exit code 0

    4、难点

    1. #!/usr/bin/env python
    2. # -*- coding:utf-8 -*-
    3. if __name__ == '__main__':
    4. a = [1, 2, 3]
    5. c = []
    6. c.append(a)
    7. print(c)
    8. a.append(4)
    9. print(c)

    输出:

    1. [[1, 2, 3]]
    2. [[1, 2, 3, 4]]
    3. Process finished with exit code 0

    可以看到改变a列表以后,c列表也发生了改变。

    出现这种现象的原因:因为list列表使用append()方法追加时,实际上是浅拷贝造成的。

    解决方法:可以使用copy.deepcopy()进行深拷贝。

    1. #!/usr/bin/env python
    2. # -*- coding:utf-8 -*-
    3. import copy
    4. if __name__ == '__main__':
    5. a = [1, 2, 3]
    6. c = []
    7. c.append(copy.deepcopy(a))
    8. print(c)
    9. a.append(4)
    10. print(c)

    输出:

    1. [[1, 2, 3]]
    2. [[1, 2, 3]]
    3. Process finished with exit code 0

  • 相关阅读:
    查询缓存-缓存更新-缓存穿透-缓存雪崩-缓存击穿
    Terraform基础设施自动化部署教程
    云平台下ESB产品开发步骤说明
    Java练习20
    【IoT毕设.上】STM32+机智云AIoT+实验室安全监控系统
    this 内存原理
    P5505 [JSOI2011]分特产(容斥多重集组合数)
    MATLAB向量的模和MATLAB向量点积、MATLAB等差元素向量
    应广单片机(MCU单片机科普)
    一文看懂推荐系统:召回09:地理位置召回、作者召回、缓存召回
  • 原文地址:https://blog.csdn.net/kevinjin2011/article/details/125536933