假期(面试题一)

# # 1、如何实现对python列表去重并保持原先的顺序?
# li = [3,5,7,8,6,3,2,4,7,5,4,3,2,1]
# new_list = []
# for i in li:
#     if i in new_list:
#         pass
#     new_list.append(i)
# print(new_list)

## 2、现有两元组(("a"),("b")),(("c"),("d")),使用python中匿名函数生成列表[{"a":"c"},{"b":"d"}]
# x,y = (("a"),("b")),(("c"),("d"))
# print(dict(zip(x,y)))
# #解法一:
# text = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
# print(text(x,y))
# # 解法二
# print(list(map(lambda t:{t[0]:t[1]},zip(x,y))))
# # 解法三
# print([{i:j} for i,j in zip(x,y)])

# # 3、请写出二分查找的python实例代码,
# li = [1,4,3,67,9,8,7,5,33,45,99]
# li.sort(reverse=False)
#
# def binary_search(alist,item):
#     '''
#     :param alist:
#     :param item:
#     :return: 二分查找,循环
#     '''
#     n = len(alist)
#     start = 0
#     end = n-1
#     while start <= end:
#         mid = (start+end)//2
#         if item not in alist:
#             return "没有你要找的东西"
#         elif item == alist[mid]:
#             return "找到了,索引为%s" %mid
#         elif item < alist[mid]:
#             end = mid - 1
#         elif item > alist[mid]:
#             start = mid + 1
#     return False
# print(binary_search(li,100))
#
# def search(data,item):
#     '''
#     :param data:
#     :param item:
#     :return:递归实现二分查找
#     '''
#     n = len(data)
#     if 0 == n:
#         return False
#     mid = n//2
#     if item not in data:
#         return False
#     elif item == data[mid]:
#         return mid
#     elif item < data[mid]:
#         return search(data[:mid],item)
#     else:
#         return search(data[mid+1:],item)
# print(search(li,1))

# # 4、在python字符串格式化中,%和.format 的主要区别是什么?
# 从大的角度来说两者没有什么较大的区别,用%能实现的格式化操作同format同样可以完成,反之毅然,从小的角度来说format格式化更加灵活
# 例如:
# ls1 = "{0}{1}{2}".format("张","建","平")
# ls2 = "{}{}{}".format("张","建","平")
# ls3 = "{name1}{name2}{name3}".format(name1="张",name2="建",name3="平")
# print(ls1,ls2,ls3)          #他们打印的结果是相同的

# # 5、*args和**kwargs在什么情况下回使用到?请给出使用**kwargs的示例
# # *args和**kwargs为可变长参数,当函数需要传太多的值时形参可以用这个代替
# def text(**kwargs):
#     print(kwargs)
# text(name="张建平",age=18,sex="male")

# 6、x="foo",y = 2 ;  print(x*y) 的结果是什么?
# 结果为foofoo      #字符串支持加法(拼接)和乘法

# # 7、kvps = {"1":1,"2":2};thecopy = kvps;  kvps["1"] = 5;sum = kvps["1"] + thecopy["1"]  print(sum) 的结果是什么?
# kvps = {"1":1,"2":2}
# thechop = kvps
# kvps["1"] = 5
# sums = kvps["1"] + thechop["1"]
# print(sums)       #thecopy和kvps公用一块内存地址,改变其中某一项,另一个也将会改变   10

# 8、sys.path.append("/root/mods")的作用是什么
# 路径拼接,会将/root/mods 加入sys.path中,在python中模块路径找不到经常使用

# 9、python里面如何实现tuple和list的转换
# 假如有一个元组tupledemo,转换为列表只需要     list(tupledemo)
# 假如有一个元组listdemo,转换为列表只需要     tuple(listdemo)

# 10、请写出一段代码实现删除一个list里面的重复元素
# lis = [1,2,3,2,4,5,3,2,4]
# # 方法一
# data_list= []
# for i in lis:
#     if i not in data_list:
#         data_list.append(i)
# print(data_list)
# 方法二
# print(list(set(lis)))

 

posted @ 2018-02-13 16:40  前方、有光  阅读(260)  评论(0编辑  收藏  举报