一、python2中有range和xrange,这两个有什么区别?
不同:
1、在python2中,range得到的是一个列表,占用内存比较大
2、在python2中,xrange得到的是生成器对象,占用内存比较小
相同:
它们的使用都是一样的,比如都可以用for循环遍历所有的值
补充:
python3中没有xrange,有range,但是python3中的range相当于python2中的xrange。因为使用生成器可以节约内存。
比如现在有个代码是for i in range(0, 10000),如果还是使用py2中的range的话,那你就会得到一个0到9999的一个列表,这个将会占用你很大的空间,但是使用生成器的话,就会节省很大的资源。
二、print(int(‘111’, 2)) 的结果是?
如下图所示:答案是7
原因如下:
int(‘111’,2),是指2进制为111对应的十进制数是多少?这个int方法中,是指将对应进制的数转换为十进制,第一参数是原始数的字符串形式,第二个参数指这个数的进制,返回的是它的十进制数。所以111是2进制,它的十进制就是2^2+2+1=7
三、在python当中如何获取命令行参数?
四、python中id、is、=、== 分别是比较什么的?
1、id():获取的是对象在内存的地址
2、is 比对2个变量的对象引用是否相同,即判断id()获取的值是否相同,如果相同返回True,否则False
3、==:比对2个变量的具体值是否相等,即通过地址(id)指向的内存中的具体值
五、python的小数据池是什么?
1、什么是小数据池?
python自动将-5~256的整数、有一定规则的字符串、都放在一个池中,只要是变量是这些范围内的整数或者是字符串,则直接引用,不需要另外开辟一块内存。
当两个变量的值都为-5到256之间的整数时,都取自小数据池中,所以两个变量的id相同。所以i=1,j=1时,i is j为True,如下图
而当变量不在小数据池中时,如a=1000,b=1000,a is b为False
但是在Pycharm中a=1000,b=1000,a is b却为True
在pycharm中运行同一个代码块,初始化变量时,会先检查该变量是否在字典中存在,如果不存在,就把变量和该值的内存地址值以key:value的形式存储到一个字典中,在遇到新的初始化变量时,先在字典中查找记录,如果有同样的记录,会重复使用这个内存地址值,就是指向同一个内存地址值,所以显示为True.
2、 小数据池的作用?
1)节省内存
2)提高性能和效率
六、test = [{‘name’:‘tom’, ‘salary’:20000}, {‘name’:‘jack’, ‘salary’:25000}, {‘name’:‘liming’, ‘salary’:10000},],根据salary由大到小进行排序
test = [{'name':'tom', 'salary':20000}, {'name':'jack', 'salary':25000}, {'name':'liming', 'salary':10000},]
a=[]
for one in test:
a.append(one['salary'])
a.sort(reverse=True)
aList=[]
i=0
for j in range(i,len(a)):
for one in test:
if a[j]==one['salary']:
aList.append(one)
break
i+=1
print(a)
print(aList)
运行结果