扫码关注公众号
Python中列表,元组,字典,集合的区别
列表:顺序存储结构,占更多存储空间(默认存了指针),元素不必相同,用"[]"表示。元组:元组和列表在结构上没有什么区别,唯一的差异在于元组是只读的,不能修改。元组用“()”表示。字典:字典定义了键和值之间一对一的关系,但它们是以无序的方式储存的。定义Dictionary使用一对大(花)括号"{}"。tf中的feed_dict操作。(其中前三个也可称之为Python的数组类型)集合:用的比较少,无序不重复元素集。
说一下python的内存池机制。
Python的内存机制以金字塔行-1,-2层主要有操作系统进行操作;第0层是C中的malloc,free等内存分配和释放函数进行操作;第1层和第2层是内存池,有Python的接口函数PyMem_Malloc函数实现,当对象小于256K时有该层直接分配内存;第3层是最上层,也就是我们对Python对象的直接操作;在C中如果频繁的调用malloc与free时,是会产生性能问题的.再加上频繁的分配与释放小块的内存会产生内存碎片.Python在这里主要干的工作有:1、如果请求分配的内存在1~256字节之间就使用自己的内存管理系统,否则直接使用malloc.2、这里还是会调用malloc分配内存,但每次会分配一块大小为256k的大块内存.经由内存池登记的内存到最后还是会回收到内存池,并不会调用C的free释放掉.以便下次使用.对于简单的Python对象,例如数值、字符串,元组(tuple不允许被更改)采用的是复制的方式(深拷贝?),也就是说当将另一个变量B赋值给变量A时,虽然A和B的内存空间仍然相同,但当A的值发生变化时,会重新给A分配空间,A和B的地址变得不再相同
解释Python的内置数据结构?
Python中主要有四种类型的数据结构。列表:列表是从整数到字符串甚至另一个列表的异构数据项的集合。列表是可变的。列表完成了其他语言中大多数集合数据结构的工作。列表在[]方括号中定义。例如:a=[1,2,3,4]集合:集合是唯一元素的无序集合。集合运算如联合|,交集&和差异,可以应用于集合。{}用于表示一个集合。例如:a={1,2,3,4}元组:Python元组的工作方式与Python列表完全相同,只是它们是不可变的。()用于定义元组。例如:a=(1,2,3,4)字典:字典是键值对的集合。它类似于其他语言中的hashmap。在字典里,键是唯一且不可变的对象。例如:a={'number':[1,2,3,4]}