第一题:考察python中的内置函数map( )和list( )
考察python3中内置函数map函数的用法
map函数:
- 描述:它会根据提供的函数对指定序列做映射
- 语法:map(function,iterable,…)
- 参数:——function是函数
——iterable是一个或多个序列 - 返回值:一个迭代器。
迭代器并非是值一个列表或字典,而是一个地址,类似于指针,它是用来访问容器(保存元素的数据结构)中保存的元素;实际上,数组范围内的指针也是一种迭代器
注意:之后记得总结一下迭代器及其作用
def square(x):
return x ** 2
map(square,[1,2,3,4,5])
list(map(square,[1,2,3,4,5]))
list(map(lambda x:x ** 2,[1,2,3,4,5]))
第二题:考察python中字符串的使用及字符串内建函数
center(width,fillchar)
字符串
- 描述:python中的字符串是它最常用的数据类型,我们一般用(“ ” 或’ ')来创建字符串,不需要先定义后赋值,直接为变量创建一个值就可以创建好字符串:
var 1='HELLO,WORLD'
VAR 2="Runoob"
内建函数center(width,fillchar) 返回值:一个指定宽度为width的字符串,fillchar为填充的字符,默认为空格,代码中会给出用什么填充
第三题: 数组的元素是否改变的问题
本题:a经过循环操作后,形成了一个二维数组;b是一个新的列表,其实也是一个新的二维数组。在python中, 如果用一个列表a乘一个数字会得到一个新的列表b, 这个新的列表b的元素是a的元素重复
a=[['1','2']for i in range(2)]
b=[['1','2']]*2
#a[0][1]='3'
#b[0][0]='4'
print(a,b)
结果 :
a=[['1','2']for i in range(2)]
b=[['1','2']]*2
a[0][1]='3'
b[0][0]='4'
print(a,b)
结果 : b变量的b「0」和b「1」其实是一个东西,在同一块地址上。因此修改b[0][0]的时候,b[1][0]也会改变,可以从以下代码看出:
#打印b[0]与b[1]的id
print(id(b[0]))
print(id(b[1]))
print(id(b[0][0]))
print(id(b[1][0]))
结果:
第四题 :关于计算机基本原理
第一个错:栈是从高地址向低地址增长,而堆是向高地址增长;
查看 1.数据结构中的堆栈和内存中的堆栈,如下
第二个:
去查查,总结一下函数调用,压栈的工作原理
第三个错:python3中int的取值范围
查看2.python3中的int取值范围(64位机子)
第四个正确
如下
1.数据结构中的堆栈和内存中的堆栈
数据结构中的堆栈:是一种数据结构,管理数据的容器。可以用来存放数据和地址。栈只能在栈顶进行操作,例如删除或插入
内存中的堆栈 : 是确切存在的物理结构,可以存放不同数据的内存空间。
- 内存中的栈,存放函数的函数值,局部变量,是由系统自动分配和释放的,是由高地址向低地址扩展的数据机构,是一段连续的内存区域,是对数据结构中的栈这种手段的实现。栈的顶地址和最大容量是系统预先设定好的,在程序编译时,它就是一个确定的常数,但注意并不是所有用到栈技术的区域都是栈区,虽然目前是这样,这是概念定义的准确性问题。
只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。
- 内存中堆,一般用来动态分配内存的,它的实现跟操作系统和编译器有关,一般内存中的堆貌似是用链表实现的。
在堆中,队列优先,先进先出。是一种向高地址扩展的数据结构,不连续的内存区域。
在操作系统中,堆一般是由程序员动态分配释放的,分配方式:操作系统有一个专门存储空闲地址的链表,当程序申请分配空间时,OS会遍历这个链表(遍历方向:低地址向高地址),找到第一个大于申请的空间的堆节点,并从空闲节点列表中删除该节点,把空间分配给程序,若找到的空间比申请的空间要大,系统会自动把多余的那部分重新放入空闲链表中。一般来说,操作系统会在内存的首地址处记录分配的空间大小,以便程序能够正确地释放该内存空间。堆的大小取决于计算机有效的虚拟内存。
2.python3中的int取值范围(64位机子)
int的范围* python3: 在32位机器上,整数的位数为32位,取值范围为-231~231-1; 在64位系统上,整数的位数为64位,取值范围为-263~263-1; python3: 理论上长度是无限的(只要内存足够大)
|