一、数据类型

1、字典

1.1 现有字典 dict={‘a’:24,‘g’:52,‘i’:12,‘k’:33}请按字典中的 value 值进行排序?

  1. sorted(dict.items(),key=lambda x:x[1])

1.2说一下字典和json的区别?

  1. 字典是一种数据结构,json是一种数据的表现形式,字典的key值只要能hash就行,json的则必须是字符串

1.3什么是可变类型,什么是不可变类型?

  1. 可变不可变是指内存中的值是否可以被改变,不可变是指对象内存块中的值是不可以被改变的,不可变类型有数值、字符串、元组。可变类型则是可以改变的,可变类型有列表和字典。

1.4存入字典里的数据有没有先后顺序?

  1. 存入字典中的数据不会自动排序,可以使用sort函数对字典进行排序。

1.5字典推导式?

  1. dict={k:v for (k,v) in iterable}

2、字符串

2.1请反转字符串“sStr”

  1. print("sStr"[::-1])

方法千万种,其他的清自行脑补或搜索

2.2 将字符串”k:1|k1:2|k2:3|k3:4”,处理成Python字典:{k:1, k1:2, … } # 字 典里的K作为字符串处理

  1. str1 = "k:1|k1:2|k2:3|k3:4"
  2. def srt2dict(str1):
  3. dict={}
  4. for items in str1.split("|"):
  5. k,v=items.split(":")
  6. dict[k]=v
  7. return dict
  8. print(srt2dict(str1))

2.3 请按alist中元素的age由大到小排序

  1. alist=[{'name':'a','age':10},{'name':'b','age':20},{'name':'c','age':30}]
  1. alist=[{'name':'a','age':10},{'name':'b','age':20},{'name':'c','age':30}]
  2. def sort_by_age(alist):
  3. return sorted(alist,key=lambda x:x["age"],reverse=True)
  4. print(sort_by_age(alist))

3、列表

3.1 下面代码的输出结果将是什么?

  1. list = ['a','b','c','d','e']
  2. print(list[10:])

输出是一个空列表

  1. 1. 上面的代码将输出[],不会产生IndexError错误。就像所期望的那样,尝试用超出成员的个数的index
  2. 2. 来获取某个列表的成员。
  3. 3. 例如,尝试获取list[10]和之后的成员,会导致IndexError

3.2 写一个列表生成式,产生一个公差为11的等差数列

  1. print([x*11 for x in range(10)])

3.3 给定两个列表,怎么找出他们相同的元素和不同的元素?

  1. list1 = [1,2,3]
    list2 = [3,4,5]
  1. list1 = [1,2,3]
  2. list2 = [3,4,5]
  3. set1 = set(list1)
  4. set2 = set(list2)
  5. print(set1&set2)
  6. print(set1^set2)

3.4 请写出一段Python代码实现删除一个list里面的重复元素?

  1. l1 = ['b','c','d','b','c','a','a']

比较容易记忆的是用内置的set:

  1. l1 = ['b','c','d','b','c','a','a']
  2. print(list(set(l1)))

如果想要保持他们原来的排序:
用list类的sort方法:

  1. l1 = ['b','c','d','b','c','a','a']
  2. # print(list(set(l1)))
  3. l2 = list(set(l1))
  4. l2.sort(key=l1.index)
  5. print(l2)

也可以这样写:

  1. l1 = ['b','c','d','b','c','a','a']
  2. l2 = sorted(set(l1),key=l1.index)
  3. print(l2)

也可以使用遍历:

  1. l1 = ['b','c','d','b','c','a','a']
  2. l2 = []
  3. for i in l1:
  4. if not i in l2:
  5. l2.append(i)
  6. print(l2)

3.5 给定两个list A ,B,请用找出 A ,B中相同的元素,A ,B中不同的元素

  1. 1. AB 中相同元素:print(set(A)&set(B))
  2. 2. AB 中不同元素:print(set(A)^set(B))

3.6 有如下数组list = range(10)我想取以下几个数组,应该如何切片?

  1. 1. [123456789]
  2. 2. [123456]
  3. 3. [3456]
  4. 4. [9]
  5. 5. [13579]
  6. 6. 答: 1. [1:] 2. [1:7] 3. [3:7] 4. [-1] 5. [1::2]

3.7 下面这段代码的输出结果是什么?请解释?

  1. def extendlist(val, list=[]):
  2. list.append(val)
  3. return list
  4. list1 = extendlist(10)
  5. list2 = extendlist(123, [])
  6. list3 = extendlist('a')
  7. print("list1 = %s" %list1)
  8. print("list2 = %s" %list2)
  9. print("list3 = %s" %list3)
  10. # 输出结果:
  11. # list1 = [10, 'a']
  12. # list2 = [123]
  13. # list3 = [10, 'a']

新的默认列表只在函数被定义的那一刻创建一次。当extendList被没有指定特定参数list调用时,这组list的值
随后将被使用。这是因为带有默认参数的表达式在函数被定义的时候被计算,不是在调用的时候被计算。

3.8 将以下3 个函数按照执行效率高低排序

  1. 1. def f1(lIn):
  2. 2. l1 = sorted(lIn)
  3. 3. l2 = [i for i in l1 if i<0.5]
  4. 4. return [i*i for i in l2]
  5. 5. def f2(lIn):
  6. 6. l1 = [i for i in l1 if i<0.5]
  7. 7. l2 = sorted(l1)
  8. 8. return [i*i for i in l2]
  9. 9. def f3(lIn):
  10. 10. l1 = [i*i for i in lIn]
  11. 11. l2 = sorted(l1)
  12. 12. return [i for i in l1 if i<(0.5*0.5)]

按执行效率从高到低排列:f2、f1和f3。
要证明这个答案是正确的,你应该知道如何分析自己代码的性能。
Python中有一个很好的程序分析包,可以满足这个需求。

  1. 1. import random
  2. 2. import cProfile
  3. 3. lIn = [random.random() for i in range(100000)]
  4. 4. cProfile.run('f1(lIn)')
  5. 5. cProfile.run('f2(lIn)')
  6. 6. cProfile.run('f3(lIn)')

3.9 获取1~100被7整除的偶数?

  1. def A():
  2. L=[]
  3. for i in range(1,100):
  4. if i%7==0:
  5. L.append(i)
  6. return L
  7. print(A())

4、元组

  1. 1. tuple:元组,元组将多样的对象集合到一起,不能修改,通过索引进行查找,使用括号”()”;
  2. 2. 应用场景:把一些数据当做一个整体去使用,不能修改;

5、集合

  1. 1. set:set集合,在Python中的书写方式为{},集合与之前列表、元组类似,可以存储多个数据,但
  2. 2. 是这些数据是不重复的。集合对象还支持union(联合), intersection(交), difference(差)和
  3. 3. sysmmetric_difference(对称差集)等数学运算.

快速去除列表中的重复元素

  1. 1. In [4]: a = [11,22,33,33,44,22,55]
  2. 2. In [5]: set(a)
  3. 3. Out[5]: {11, 22, 33, 44, 55}

交集:共有的部分

  1. a = {71,72,73,74,75}
  2. b = {72,74,75,76,77}
  3. a&b
  4. #{72, 74, 75}

并集:总共的部分

  1. a = {21,22,23,24,25}
  2. b = {22,24,25,26,27}
  3. a | b
  4. #{21, 22, 23, 24, 25, 26, 27}

差集:另一个集合中没有的部分

  1. a = {51,52,53,54,55}
  2. b = {52,54,55,56,57}
  3. b - a
  4. #{66, 77}

对称差集(在a或b中,但不会同时出现在二者中)

  1. a = {91,92,93,94,95}
  2. b = {92,94,95,96,97}
  3. a ^ b
  4. #{11, 33, 66, 77}

持续无限期更新中。。。。。。。。。。。

python面试题(四)的更多相关文章

  1. python面试题四:Python web框架

    1 django.flask.tornado框架的比较? 2 什么是wsgi? WSGI的全称是Web Server Gateway Interface,翻译过来就是Web服务器网关接口.具体的来说, ...

  2. python公司面试题集锦 python面试题大全

    问题一:以下的代码的输出将是什么? 说出你的答案并解释. class Parent(object): x = 1 class Child1(Parent): pass class Child2(Par ...

  3. python 面试题4

    Python面试题 基础篇 分类: Python2014-08-08 13:15 2071人阅读 评论(0) 收藏 举报 最近,整理了一些python常见的面试题目,语言是一种工具,但是多角度的了解工 ...

  4. 一道Python面试题

    无意间,看到这么一道Python面试题:以下代码将输出什么? def testFun():    temp = [lambda x : i*x for i in range(4)]    return ...

  5. 很全的 Python 面试题

    很全的 Python 面试题 Python语言特性 1 Python的函数参数传递 看两个例子:           Python   1 2 3 4 5 a = 1 def fun(a):      ...

  6. 面试前赶紧看了5道Python Web面试题,Python面试题No17

    目录 本面试题题库,由公号:非本科程序员 整理发布 第1题: Flask中的请求上下文和应用上下文是什么? 第2题:django中间件的使用? 第3题: django开发中数据做过什么优化? 第4题: ...

  7. Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究

    Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究 一丶反射 什么是反射: ​ 反射的概念是由Smith在1982年首次提出的 ...

  8. 最新python面试题

    1.一行代码实现1--100之和 利用sum()函数求和 2.如何在一个函数内部修改全局变量 利用global 修改全局变量 3.列出5个python标准库 os:提供了不少与操作系统相关联的函数 s ...

  9. Python面试题 —— 获取列表中位数

    中位数是一个可将数值集合划分为相等的上下两部分的一个数值.如果列表数据的个数是奇数,则列表中间那个数据就是列表数据的中位数:如果列表数据的个数是偶数,则列表中间那2个数据的算术平均值就是列表数据的中位 ...

随机推荐

  1. CSS3动画详解(图文教程)

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 前言 本文主要内容: 过渡:transition 2D 转换 trans ...

  2. APP主要测试类型及测试点总结

    根据测试重点区分 一.功能性测试 根据产品需求文档编写测试用例: 根据设计文档编写测试用例: 根据UI原型图编写测试用例 二.UI测试 原型图/效果图对比 用户体验 数据模拟:需要考虑正式环境可能的数 ...

  3. webstorm使用过程中的一些问题与技巧

    这一篇会随着使用逐渐更新: 1. 问题:string templates are not supported by current javascript version 解决 : setting &g ...

  4. 从ibd文件获取表空间id

    xtrabackup恢复过程中出现如下错误 InnoDB: Doing recovery: scanned up to log sequence number ( %) InnoDB: Doing r ...

  5. EOFException异常详解

    最近线上的系统被检测出有错误日志,领导让我检查下问题,我就顺便了解了下这个异常. 了解一个类,当然是先去看他的API,EOFException的API如下: 通过这个API,我们可以得出以下信息: 这 ...

  6. javascript 正则(将数字转化为三位分隔的样式)【转】

    原文:https://www.cnblogs.com/sivkun/p/7123963.html })+\b)/g, ',') 解释: \b : 匹配单词边界,就是位于字符\w([a-zA-Z0-9_ ...

  7. WebBrowser实现:自动填充网页上的用户名和密码并点击登录按钮

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { ...

  8. Django有关的所有命令

    1. Django的安装 pip install django ==1.11.11 pip install -i yuan django==1.11.11 2. 创建项目 django-admin s ...

  9. Hash Tables

    哈希表 红黑树实现的符号表可以保证对数级别的性能,但我们可以做得更好.哈希表实现的符号表提供了新的数据访问方式,插入和搜索操作可以在常数时间内完成(不支持和顺序有关的操作).所以,在很多情况下的简单符 ...

  10. android studio 错误: InnerClass annotations are missing corresponding EnclosingMember annotations. Such InnerClass annotations are ignored

    android studio 错误: InnerClass annotations are missing corresponding EnclosingMember annotations. Suc ...