1、python单例模式?
②. 使用decorator来实现单例模式
- def singleton(cls, *args, **kw):
- instances = {}
- def _singleton():
- if cls not in instances:
- instances[cls] = cls(*args, **kw)
- return instances[cls]
- return _singleton
2.lambda函数是一种单行的小函数,形式如下:labmda 参数:表达式 ,lambda函数默认返回表达式的值。
3.Python里面如何拷贝一个对象?
一般来说可以使用copy.copy()方法或者copy.deepcopy()方法,几乎所有的对象都可以被拷贝
4 PyChecker是一个python代码的静态分析工具,它可以帮助查找python代码的bug, 会对代码的复杂度和格式提出警告
5.有两个序列a,b,大小都为n,序列元素的值任意整形数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小?
1. 将两序列合并为一个序列,并排序,为序列Source 2. 拿出最大元素Big,次大的元素Small 3. 在余下的序列S[:-2]进行平分,得到序列max,min 4. 将Small加到max序列,将Big加大min序列,重新计算新序列和,和大的为max,小的为min。
Python代码 :
def mean( sorted_list ):
if not sorted_list:
return (([],[]))
big = sorted_list[-1]
small = sorted_list[-2]
big_list, small_list = mean(sorted_list[:-2])
big_list.append(small)
small_list.append(big)
big_list_sum = sum(big_list)
small_list_sum = sum(small_list)
if big_list_sum > small_list_sum:
return ( (big_list, small_list))
else:
return (( small_list, big_list))
java实现:
分别用i,j遍历a,b序列,若a[i]和b[j]交换,则:A' = sum(a) - a[i] + b[j] - (sum(b) - b[j] + a[i])
= sum(a) - sum(b) - 2 (a[i] - b[j])
= A - 2 (a[i] - b[j])
即就是:(a[i] - b[j])在(0,A)之间并且最接近A/2则序列a,b的差值最小
因此得到算法:
在a和b中寻找使得x在(0,A)之间并且最接近A/2的i和j,交换相应的i和j元素,重新计算A后,重复前面的步骤直至找不到(0,A)之间的x为止。
int balanceArray(int[] array1, int[] array2){
if (array1.length != array2.length)
return -1;
if (sum(array1)< sum(array2)) //让array1的和大于array2.
{
int[] array = array1;
array1 = array2;
array2 = array;
}
boolean ifCycle = true;
int length = array1.length;
int sumValue = 0;
while (ifCycle)
{
ifCycle = false;
for (int i = 0; i < length; i++)
{
for (int j = 0; j < length; j++)
{
int itemValue = array1[i] - array2[j];
sumValue = sum(array1) - sum(array2);
if (itemValue < sumValue && itemValue > 0)
{
ifCycle = true;
int item = array1[i];
array1[i] = array2[j];
array2[j] = item;
}
}
}
}
return sumValue;
}
6.Python里面search()和match()的区别? match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配
7.Python中pass语句的作用是什么? pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作
8.说明os,sys模块不同?os:提供一种方便的使用操作系统函数的方法;sys:提供访问由解释器使用或维护的变量和在与解释器交互使用到的函数。
os 常用方法:os.remove()删除文件 ,os.rename()重命名文件 ,os.walk()生成目录树下的所有文件名 ,os.chdir()改变目录 ,os.getcwd()取得当前工作目录
sys 常用方法:sys.maxint 最大的Int值 ,sys.stdout 标准输出 ,sys.stdin 标准输入
os.path和sys.path的区别?os.path是module(模块),包含了各种处理长文件名(路径名)的函数;sys.path是由目录名构成的列表
9.解释生成器(generator)与函数的不同,并实现和使用简单generator?
生成器和函数的主要区别在于函数 return a value,生成器 yield a value。 yield 使函数转换成生成器,而生成器反过来又返回迭代器。
10.合并链表:a.extend(b)或 a+b
8823

被折叠的 条评论
为什么被折叠?



