• 【列表添加元素】详解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

  • 相关阅读:
    LINUX如何 部署ansible
    【算法刷题 | 贪心算法03】4.25(最大子数组和、买卖股票的最佳时机|| )
    【Nginx】nginx | 微信小程序验证域名配置
    信息系统项目管理师必背核心考点(二十四)WBS分解的原则
    【Python测试开发】:切换窗口和表单
    springBoot整合thymeleaf(超简单)
    ADB移动端入门
    Apollo Planning规划算法仿真调试(11):速度规划ComputeSTBoundary
    R语言将连续变量映射到颜色或尺寸上二
    我的Spark学习笔记
  • 原文地址:https://blog.csdn.net/kevinjin2011/article/details/125536933