以不可变对象为元素的列表

a=[1,2]

b=a*3

#则b为

[1,2,1,2,1,2]

以可变对象为元素的列表

#如列表以列表为元素

a=[[1]]

b=a*3

#则b为

[[1],[1],[1]]

#不过有趣的是

id(b[0])==id(b[1])==id(b[2])

#也就是说b的三个列表元素项都是引用的一个原先的列表元素项,

#实际上并没有新的列表元素项产生,这与直接定义b=[[1],[1],[1]]

#是截然不同的,直接定义的b其各列表元素项的id值是不同的

以上的文字解释可能还不太清楚,我们这里以图片辅助说明:

如图为a*3所得到的b的内存中的示意图,其0、1、2下标项所指向的都是列表元素项[1],而该项的下标0对应的又指向内存中的数值1。

如图为直接定义的b=[[1],[1],[1]]。可见其0、1、2下标项分别指向三个不同的列表元素项[1],而这三个不同的列表元素项的下标0对应的自然也都是内存中的数值1。

同时含有可变对象与不可变对象作为元素

a=[[1],2]

b=a*3

#则b为

[[1],2,[1],2,[1],2]

#并且仍然有

id(b[0])==id(b[2])==id(b[4])

总结

python中的这个现象,我个人认为更是一种语言实现上的bug ,并不真的是什么有趣的知识点。很自然的逻辑,我们对于a*3得到的b,希望分别对b[0]和b[1]修改时,会发现竟然会是同时修改的(a=[[1]]),这太容易导致错误了,与一般性的逻辑不符。

python列表乘一个数字_python的列表乘以数字相关推荐

  1. python怎么创建列表_用Python将一个列表分割成小列表的实例讲解 Python 如何创建一个带小数的列表...

    python里有一个列表,列表里有几个小列表,小列表#冒泡排序:scoreList = [['a',98],['c',45],['b',70],['d',85],['h',85],['f',92],[ ...

  2. 编写下面的函数合并两个有序列表构成一个新的有序列表: def merge(list1,list2): 编写测试程序提示用户输入两个有序列表,然后显式合并后的有序列表。

    题目内容:编写下面的函数合并两个有序列表构成一个新的有序列表:def merge(list1,list2):编写测试程序提示用户输入两个有序列表,然后显式合并后的有序列表.要求:不允许使用系统提供的s ...

  3. python列表转换成数字_python 字母转成数字Python操作列表的常用方法总结

    下面列出列表常用的方法操作列表以及小例子: 1.  Append 在列表末尾添加元素,需在列表末尾添加元素,需要注意几个点: A. append中添加的参数是作为一个整体 >>> n ...

  4. python怎样遍历列表中数字_Python基础-列表操作(2):列表的遍历和数字列表

    Python基础-列表(2): 1.对列表进行遍历操作 python中遍历的写法是for xx in list,末尾跟个冒号,第二行开始缩进,进入循环之中.word = ['a','b','c'] f ...

  5. python读取字典元素笔记_Python中列表、字典、元组数据结构的简单学习笔记

    列表 列表是Python中最具灵活性的有序集合对象类型.与字符串不同的是,列表可以包含任何类型的对象:数字.字符串甚至其他列表.列表是可变对象,它支持原地修改的操作. Python的列表是: 任意对象 ...

  6. python的含义和用法_python中列表的含义及用法

    示例 列表是元素的集合,存储在一个变量中.列表中存储的元素类型没有限制,下面是列表的一个简单例子. students = ['bernice', 'arron', 'cody'] for studen ...

  7. python列表常用操作函数_Python入门——列表常用操作

    Python列表常用操作 准备 控制台输入ipython parallels@parallels-vm:~$ ipythonPython 2.7.12 (default, Dec 4 2017, 14 ...

  8. python列表逆序输出_Python 让列表逆序排列的 3 种方式

    让列表逆序排列是我们编程时常碰到的问题,比如现在有一些客户的姓名是将拼音的首字母按 A - Z 排列的,而你现在想找一个姓张( Z )的客户,你就有了将姓名逆序排列的需求了.而在 Python 中,将 ...

  9. python中list的意思_python中列表和集合有什么区别

    列表list 字面意思就是一个集合,在Python中List中的元素用中括号[]来表示,可以这样定义一个List:L = [12, 'China', 19.998] 可以看到并不要求元素的类型都是一样 ...

  10. python搜索列表内_使用Python在另一个List中搜索列表的值

    try: last_found = -1 for num in L1: last_found = L2.index(num, last_found + 1) return True except Va ...

最新文章

  1. akaze特征匹配怎么去掉不合适的点_一种无人机滑坡遥感影像的快速匹配算法
  2. 如何在Python中获取字符串的子字符串?
  3. 使用JBoss Modules来模块化Java
  4. 利用 SIFT 实现图像拼接
  5. Dagger简单Demo
  6. oracle获取下级函数,从oracle获取函数和过程签名列表
  7. [转] 前端中的MVC
  8. 《spring-boot学习》-06-thymeleaf详解
  9. 懒加载、瀑布流和LightBox实现图片搜索效果
  10. 解决ECLIPSE 卡死的方法
  11. watershed用法详解
  12. 利用PlayerPrefs存储数据
  13. Spring mvc+ Hibernate的基础dao类。
  14. java 泛型接口_Java中泛型接口
  15. Visual FoxPro权威指南pdf
  16. unity人物动画配置
  17. NDK学习笔记:一起来变萝莉音!FMOD学习总结(上)
  18. Strom 消息可靠性保障机制和Ack原理
  19. cao方法matlab程序,偏最小二乘法 matlab程序 [转]
  20. 学生管理系统IPO图_玩不起了?海底捞取消大学生69折优惠,海底捞:暂不会调整...

热门文章

  1. java 正则表达式只有中文汉字英文数字
  2. linux运维管理之监控,Linux系统运维之运维监控.pdf
  3. 搞定蓝牙——第二篇(蓝牙架构)
  4. Keepalived高可用及脑裂
  5. iis7设置dz论坛url静态化经验
  6. Ubuntu 18.04安装JDK 1.8
  7. ansible playbook play常用参数配置
  8. 服务器资源监控工具—nmon
  9. AMT49105:高度集成的 ASIL BLDC MOSFET驱动器IC
  10. 软考可以在上海积分落户吗?很多人分不清!