python面试题
Posted sui776265233
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python面试题相关的知识,希望对你有一定的参考价值。
一、数据类型
1、字典
1.1 现有字典 dict={‘a’:24,‘g’:52,‘i’:12,‘k’:33}请按字典中的 value 值进行排序?
sorted(dict.items(),key=lambda x:x[1])
1.2说一下字典和json的区别?
字典是一种数据结构,json是一种数据的表现形式,字典的key值只要能hash就行,json的则必须是字符串
1.3什么是可变类型,什么是不可变类型?
可变不可变是指内存中的值是否可以被改变,不可变是指对象内存块中的值是不可以被改变的,不可变类型有数值、字符串、元组。可变类型则是可以改变的,可变类型有列表和字典。
1.4存入字典里的数据有没有先后顺序?
存入字典中的数据不会自动排序,可以使用sort函数对字典进行排序。
1.5字典推导式?
dict={k:v for (k,v) in iterable}
2、字符串
2.1请反转字符串“sStr”
print("sStr"[::-1])
方法千万种,其他的清自行脑补或搜索
2.2 将字符串”k:1|k1:2|k2:3|k3:4”,处理成Python字典:{k:1, k1:2, … } # 字 典里的K作为字符串处理
str1 = "k:1|k1:2|k2:3|k3:4" def srt2dict(str1): dict={} for items in str1.split("|"): k,v=items.split(":") dict[k]=v return dict print(srt2dict(str1))
2.3 请按alist中元素的age由大到小排序
alist=[{‘name‘:‘a‘,‘age‘:10},{‘name‘:‘b‘,‘age‘:20},{‘name‘:‘c‘,‘age‘:30}]
alist=[{‘name‘:‘a‘,‘age‘:10},{‘name‘:‘b‘,‘age‘:20},{‘name‘:‘c‘,‘age‘:30}] def sort_by_age(alist): return sorted(alist,key=lambda x:x["age"],reverse=True) print(sort_by_age(alist))
3、列表
3.1 下面代码的输出结果将是什么?
list = [‘a‘,‘b‘,‘c‘,‘d‘,‘e‘] print(list[10:])
输出是一个空列表
1. 上面的代码将输出[],不会产生IndexError错误。就像所期望的那样,尝试用超出成员的个数的index 2. 来获取某个列表的成员。 3. 例如,尝试获取list[10]和之后的成员,会导致IndexError。
3.2 写一个列表生成式,产生一个公差为11的等差数列
print([x*11 for x in range(10)])
3.3 给定两个列表,怎么找出他们相同的元素和不同的元素?
list1 = [1,2,3]
list2 = [3,4,5]
list1 = [1,2,3] list2 = [3,4,5] set1 = set(list1) set2 = set(list2) print(set1&set2) print(set1^set2)
3.4 请写出一段Python代码实现删除一个list里面的重复元素?
l1 = [‘b‘,‘c‘,‘d‘,‘b‘,‘c‘,‘a‘,‘a‘]
比较容易记忆的是用内置的set:
l1 = [‘b‘,‘c‘,‘d‘,‘b‘,‘c‘,‘a‘,‘a‘] print(list(set(l1)))
如果想要保持他们原来的排序:
用list类的sort方法:
l1 = [‘b‘,‘c‘,‘d‘,‘b‘,‘c‘,‘a‘,‘a‘] # print(list(set(l1))) l2 = list(set(l1)) l2.sort(key=l1.index) print(l2)
也可以这样写:
l1 = [‘b‘,‘c‘,‘d‘,‘b‘,‘c‘,‘a‘,‘a‘] l2 = sorted(set(l1),key=l1.index) print(l2)
也可以使用遍历:
l1 = [‘b‘,‘c‘,‘d‘,‘b‘,‘c‘,‘a‘,‘a‘] l2 = [] for i in l1: if not i in l2: l2.append(i) print(l2)
3.5 给定两个list A ,B,请用找出 A ,B中相同的元素,A ,B中不同的元素
1. A、B 中相同元素:print(set(A)&set(B)) 2. A、B 中不同元素:print(set(A)^set(B))
3.6 有如下数组list = range(10)我想取以下几个数组,应该如何切片?
1. [1,2,3,4,5,6,7,8,9] 2. [1,2,3,4,5,6] 3. [3,4,5,6] 4. [9] 5. [1,3,5,7,9] 6. 答: 1. [1:] 2. [1:7] 3. [3:7] 4. [-1] 5. [1::2]
3.7 下面这段代码的输出结果是什么?请解释?
def extendlist(val, list=[]): list.append(val) return list list1 = extendlist(10) list2 = extendlist(123, []) list3 = extendlist(‘a‘) print("list1 = %s" %list1) print("list2 = %s" %list2) print("list3 = %s" %list3) # 输出结果: # list1 = [10, ‘a‘] # list2 = [123] # list3 = [10, ‘a‘]
以上是关于python面试题的主要内容,如果未能解决你的问题,请参考以下文章
经验总结:Java高级工程师面试题-字节跳动,成功跳槽阿里!
Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段