2020年Python最新面试题(二):Python基础

python秋枫 2020-11-16 10:54:34
面试 面试题 Python 试题 最新


目录

  • 1. 上期真题答案
  • 2. 如何删除一个列表(list)中的重复元素
  • 3. 如何求两个列表(list)的交集、差集或并集?
  • 4. 如何反序地迭代一个序列?
  • 5. 列表的sort方法和sorted方法有何区别?
  • 6. 列表中常用的方法有哪些?
  • 7. 什么是列表生成式?
  • 8. 字符串格式化%和.format,f格式化字符串的区别是什么?
  • 9. 单引号、双引号和三引号的区别有哪些?
  • 10. Python 中常用字符串方法有哪些?
  • 11. 如何判断一个字符串是否全为数字?
  • 12. Python 字典有哪些内置函数?
  • 13. 字典的items()方法和iteritems()方法有什么不同?
  • 14. 集合常见内置方法有哪些?
  • 15. 真题

喜欢编程的小伙伴可以加小编的Q群867067945,进群可以领取免费的学习资料哦!群里都是想学习编程的小伙伴哦

1. 上期真题答案

  1. “1 or 2”、“1 and 2”、“1 < (2==2)”、“1 < 2==2” 分别输出什么? 1 2 False True
  2. 以下代码的运行结果是什么? “A”
value = "B" and "A" or "C"
print(value)
12
  1. 用4、9、2、7 四个数字,可以使用+、-、*、和/,每个数字使用一次,使表达式的结果为24,表达式是什么? ==> (9+7-4)*2
  2. any()和all()方法有什么区别? any()只要迭代器中有一个元素为真就为真,all()要求迭代器中所有的判断项返回都是真,结果才为真。
  3. Python 中有什么元素为假? 0 空字符串、空列表、空字典、空元组、None、False都表示假。
  4. 在 Python 中是否有三元运算符 “?:” ? 没有 min = a if a<b else b
  5. 如何声明多个变量并赋值? a,b,c=3,4,5 a=b=c=3
  6. 以下程序是否会报错 V3会报错,因为字典元素的键不能为可变对象
v1 = {}
v2 = {3:5}
v3 = {[11,23]:5}
v4 = {(11,23):5}
1234
  1. a = (1,),b = (1),c = (“1”) 分别是什么类型的数据? a 为元组,b为整型,c为字符串,可以使用type函数来验证。
  2. 使用 for 循环分别遍历列表、元组、字典和集合。(简单)
  3. 99的八进制表示是多少。print(oct(99)) ==> 0o143
  4. 请写出十进制转二进制、八进制、十六进制的程序。# 获取输入十进制数 dec = int(input("输入数字: ")) print("十进制为: ", dec) print("转换为二进制为: ", bin(dec)) print("转换为八进制为: ", oct(dec)) print("转换为十进制为: ", hex(dec)) 123456

2. 如何删除一个列表(list)中的重复元素

删除列表中重复的元素有多种方式,下面介绍五种删除的方法。

方法一:使用集合 (set) 的方式

elements = ["a", "a", "b", "c", "c", "b", "d"]
e = list(set(elements))
print(e)
123

这种方法利用 set 中的元素不可重复的特性去重。除此之外,如果要保持列表元素的原来顺序,那么可以利用 list 类的 sort 方法:

elements = ["a", "a", "b", "c", "c", "b", "d"]
e = list(set(elements))
e.sort(key=elements.index)
print(e) # ['a', 'b', 'c', 'd']
1234

方法二:使用字典的方式,利用字典 key 的唯一性

# 使用字典的方式,利用字典 key 的唯一性
elements = ["a", "a", "b", "c", "c", "b", "d"]
# e = list({}.fromkeys(elements))
e = list({}.fromkeys(elements).keys())
print(e) # ['a', 'b', 'c', 'd']
12345

喜欢编程的小伙伴可以加小编的Q群867067945,进群可以领取免费的学习资料哦!群里都是想学习编程的小伙伴哦

这种方法利用字典的键值不能重复的特性来去重。其中,Python 函数 dict.fromkeys(seq[.value]) 用于创建一个新字典,以序列 seq 中元素做字典的值,value 为字典所有键对应的初始值,如下所示:

 


方法三:列表推导的方式

elements = ["a", "a", "b", "c", "c", "b", "d"]
e = []
for i in elements:
if i not in e:
e.append(i)
print(e)
123456

方法四:count计数

elements = ["a", "a", "b", "c", "c", "b", "d"]
n = 0
while n < len(elements):
if elements.count(elements[n]) > 1:
elements.remove(elements[n])
continue
n += 1
print(elements) # ['a', 'c', 'b', 'd']
12345678

方法五:reduce 函数

from functools import reduce
elements = ["a", "a", "b", "c", "c", "b", "d"]
v = reduce(lambda x, y: x if y in x else x + [y], [[]] + elements)
print(v) # ['a', 'b', 'c', 'd']
12345

3. 如何求两个列表(list)的交集、差集或并集?

求两个列表(list)的交集、差集或并集,最容易想到的方法就是用 for 循环来实现,如下所示:

a = [1, 2, 3, 4, 5]
b = [2, 4, 5, 6, 7]
# 交集
result = [r for r in a if r in b]
print(f"a与b的交集: {result}") # a与b的交集: [2, 4, 5]
# 差集 在a中但不在b中
result = [r for r in a if r not in b]
print(f"a与b的差集: {result}") # a与b的差集: [1, 3]
# 并集
result = a
for r in b:
if r not in result:
result.append(r)
print(f"a与b的并集: {result}") # a与b的并集: [1, 2, 3, 4, 5, 6, 7]
1234567891011121314

方法二:用 set 操作

a = [1, 2, 3, 4, 5]
b = [2, 4, 5, 6, 7]
# 交集
result = list(set(a).intersection(set(b)))
print(f"a与b的交集: ", result) # a与b的交集: [2, 4, 5]
# 差集 在a中但不在b中
result = list(set(a).difference(set(b)))
print(f"a与b的差集: ", result) # a与b的差集: [1, 3]
# 并集
result = list(set(a).union(set(b)))
print(f"a与b的并集: ", result) # a与b的并集: [1, 2, 3, 4, 5, 6, 7]
123456789101112

4. 如何反序地迭代一个序列?

Python 中常见的序列有字符串、列表及元组。对序列反序,可以利用内置函数 reversed() 或 range() 来实现,也可以用扩展切片 [::-1] 的形式实现。如果这个序列是列表,那么还可以使用列表自带的 reverse()方法。

(1) reversed() 是 Python 内置的函数,它的参数可以是字符串、列表或元组等序列。
(2) 利用 range() 方法生成序列的反序索引,然后从最后的元素遍历到开始的元素,就可以反序输出序列的元素。range(start, end[,step]) 方法的参数说明:
start:计数从 start 开始。默认是从 0开始。
end:计数到 end 结束,但不包括 end。
step:步长,默认为 1。
(3) seq[::-1] 扩展切片方法是利用了序列的切片操作,切片是序列的高级特性。seq[::-1] 表示反向获取 seq 中的所有元素,并且每次取一个。-1 表示从序列的最后一个元素反向遍历获取。
(4) 如果是列表(list) 序列,那么还可以直接用列表的 reverse() 方法。示例代码如下:

seq = "Hello World"
# reversed()内置函数方法
for s in reversed(seq):
print(s, end="")
print() # 换行
# range()函数方法
for i in range(len(seq) - 1, -1, -1):
s = seq[i]
print(s, end="")
print()
# [::-1]扩展切片方法
for s in seq[::-1]:
print(s, end="")
print()
# list 自带的 reverse()方法
seq = [1, 2, 3, 4, 5, 6]
seq.reverse()
for s in seq:
print(s, end="")
print()
12345678910111213141516171819202122

5. 列表的sort方法和sorted方法有何区别?

Python 对列表的排序提供了两种方法,一种是自带的 sort(),另一种方法是内置方法 sorted。可以用内置函数 help() 来查看 sort()方法 和 sorted()方法的详细说明。

列表的 sort 方法和内置方法 sorted 都有 key 和 reverse 参数, key 参数接收一个函数来实现自定义的排序,例如key=abs 按绝对值大小排序。reverse 默认值是False,表示不需要反向排序,如果需要反向排序,那么可以将 reverse 的值设置为 True

sort 是列表方法,只可用来对列表进行排序,是在原序列上进行修改,不会产生新的序列。内置的 sorted 方法可以用于任何可迭代的对象 (字符串、列表、元组、字典等),它会产生一个新的序列,旧的对象依然存在。如果不需要旧的列表序列,那么可以采用 sort 方法。

# list的sort()方法对列表排序
seq = [1, 3, 5, 4, 2, 6]
print("原来的序列: ", seq)
seq.sort()
print("sort 排序后的序列: ", seq)
# 内置 sorted()方法对列表排序
seq = [1, 3, 5, 4, 2, 6]
s = sorted(seq)
print("原来的序列: ", seq)
print("sort 排序后的序列: ", seq)
print("sort 排序后的新序列: ", s)
# 内置sorted()方法对字符串排序
seq = "135426"
s = sorted(seq)
print("原来的序列: ", seq)
print("sort 排序后的序列: ", seq)
print("sort 排序后的新序列: ", s)
1234567891011121314151617

运行结果如下图所示:

 

6. 列表中常用的方法有哪些?

以下是 Python 列表中常用的方法:

 

7. 什么是列表生成式?

用来创建列表 (list) 的表达式就是列表生成式,也被称为列表推导式,它相当于 for 循环的简写形式。列表生成式返回的是一个列表,它提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。

每个列表生成式都在 for 之后跟一个表达式,然后有零到多个 for 或 if 子句。返回结果是一个根据表达从其后的 for 和 if 上下文环境中生成出来的列表。如果希望表达式推导出一个元组,那么就必须使用括号。列表生成式的语法:[表达式 for 循环]

# 根据 range生成一个数字的平方的列表
num_list = []
for x in range(1, 11):
num_list.append(x * x)
print(num_list)
# 如果使用列表生成式,那么代码如下:
num_list2 = [x * x for x in range(1, 11)]
print(num_list2)
# 针对偶数进行平方运算
num_list3 = [x * x for x in range(1, 11) if x % 2 == 0]
print(num_list3)
1234567891011

8. 字符串格式化%和.format,f格式化字符串的区别是什么?

格式化字符串有两种方法:%和format,具体这两种方法有什么区别?请看以下解析。

 


上面的代码在运行时会抛出一个如下的TypeError。

TypeError: not all arguments converted during string formatting
1

像这类格式化的需求就需要写成下面的格式:

# 定义一个坐标值
c = (250, 250)
# 使用%格式化
s1 = "坐标: %s" % (c,)
# 使用 format 就不会存在上面的问题
s2 = "坐标: {}".format(c)
print(s2) # 坐标: (250, 250)
1234567

一般情况下,使用 % 已经足够满足程序的需求,但是像这种需要在一个位置添加元素或列表类型的代码,最好选择 format 方法。在 format 方法中,{} 表示占位符,如下所示:

# {}表示占位符
print("{},爱老虎".format("zhangsan")) # zhangsan,爱老虎
print("{},{}爱老虎".format("王雷", "李梅")) # 王雷,李梅爱老虎
# 0表示第一个参数的位置
print("{1},{0}爱老虎".format("李梅", "王雷")) # 王雷,李梅爱老虎
12345

Python 3.6 版本开始出现了此新的格式化字符串,f-string 格式化字符串,性能又优于前面两种方式。示例代码如下:

name = "testerzhang"
print(f'Hello {name}.')
print(f'Hello {name.upper()}.')
d = {'id': 1, 'name': 'testerzhang'}
print(f'User[{d["id"]}]: {d["name"]}')
12345

9. 单引号、双引号和三引号的区别有哪些?

单引号和双引号是等效的,如果要换行,那么需要使用符号(\)。三引号则可以直接换行,并且可以包含注释,例如:

# 单引号括起来的字符串: 'hello'
# 双引号括起来的字符串: "hello"
# 三引号括起来的字符串: '''hello'''(三单引号), """hello"""(三双引号)
123

需要注意的是:

  1. 三引号括起来的字符串可以直接进行换行。
  2. 单引号里面不能再加单引号,但是可以加 \ 或者是双引号进行转义输出。
  3. 双引号里面不能再加双引号,但是可以加 \ 或者是单引号进行转义输出。

如果要表示 "Let's go" 这个字符串,那么:

 

10. Python 中常用字符串方法有哪些?

Python 中常用的字符串内置函数如下:

 

 

 

11. 如何判断一个字符串是否全为数字?

可以有以下几种办法来判断:

(1) Python isdigit() 方法检测字符串是否只由数字组成。

 


(2) Python isnumeric() 方法检测字符串是否只由数字组成。这种方法只针对 Unicode 字符串。如果想要定义一个字符串为 Unicode,那么只需要在字符串前添加 u 前缀即可。

 


(3) 自定义函数 is_number 来判断。

# -*- coding: UTF-8 -*-
"""
@author:AmoXiang
@file:3.判断一个字符串是否全为数字.py
@time:2020/11/10
"""
def is_number(s):
try:
float(s) # 如果能运行float(s)语句,返回True(字符串s是浮点数、整数)
return True
except ValueError:
pass
try:
import unicodedata # 处理ASCii码的包
unicodedata.numeric(s) # 把一个表示数字的字符串转换为浮点数返回的函数
return True
except (TypeError, ValueError):
pass
return False
# 测试字符串和数字
print(is_number("foo")) # False
print(is_number("1")) # True
print(is_number("1.3")) # True
print(is_number("-1.37")) # True
print(is_number("1e3")) # True
12345678910111213141516171819202122232425262728293031

12. Python 字典有哪些内置函数?

Python 字典包含了以下内置函数:

 


使用示例如下所示:

 

喜欢编程的小伙伴可以加小编的Q群867067945,进群可以领取免费的学习资料哦!群里都是想学习编程的小伙伴哦

13. 字典的items()方法和iteritems()方法有什么不同?

字典是 Python 语言中唯一的映射类型。映射类型对象里哈希键(键,key)和指向的对象(值,value)是多对一的关系,通常被认为是可变的哈希表。字典对象是可变的,它是一个容器类型,能存储任意个数的 Python 对象,其中也可包括其他容器类型。

字典是一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号 ( 分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如下所示:

d= {key1:value1, key2:value2}
1

键必须是唯一的,但值则不必唯一。值可以取任何数据类型,但键必须是不可变的,例如字符串、数字或元组。

字典的 items 方法可以将所有的字典项以列表方式返回,因为字典是无序的,所以用 items 方法返回字典的所有项,也是无序的。

在 Python 2.x 中,items 会一次性取出所有的值,并以列表返回。iteritems 方法与 items 方法相比作用大致相同,只是它的返回值不是列表,而是一个迭代器,通过迭代取出里面的值,一般在数据量大的时候,iteritems 会比 items 效率高些。

需要注意的是,在 Python 2.x 中,iteritems() 用于返回本身字典列表的迭代器 (Returns an iterator on allitems(key/value pairs)),不占用额外的内存。但是,在Python 3.x中,iteritems() 方法已经被废除了,用 items() 替换 iteritems(),可以用于 for 来循环遍历。在 Python 3.x 中示例:

 


在 Python 2.x 中运行如下代码:

 

14. 集合常见内置方法有哪些?

集合常见的内置方法如下表所示:

 

15. 真题

  1. 两个 list 对象 aList = [“a”,“b”,“c”,“d”,“e”,“f”],blist = [“x”,“y”,“z”,“d”,“e”,“f”],请用简洁的方法合并这两个 list,并且 list 里面的元素不能重复,最终结果需要排序。
  2. 请将两个列表[1,5,7,9]和[2,2,6,8] 合并为 [1,2,2,5,6,7,8,9]
  3. 如何将一个字符串逆序输出?
  4. 给定 list 对象 al=[{“name”:“a”,“age”:20},{“name”:“b”,“age”:30},{“name”:“c”,“age”:25}],请按 al 中元素的 age 由大到小排序。
  5. List = [-2,1,3,-6] ,如何实现以绝对值大小从小到大将List中内容排序
  6. 给定字典dic = {“a”:3,“bc”:5,“c”:3,“asd”:4,“33”:56,“d”:0},分别按照升序和降序进行排序。
  7. 给定一个嵌套列表 list2=[[1,2],[4,6],[3,1]],请分别按照嵌套列表中的子列表的第1个和第2个元素进行升序排序
  8. 使用 lambda 函数对 list 排序 foo=[-5,8,0,4,9,-4,-20,-2,8,2,-4],输出结果为 [0,2,4,8,8,9,-2,-4,-4,-5,-20],正数从小到大,负数从大到小
  9. 现有字典 d= {“a”:24,“g”:52,“i”:12,“k”:33},请按字典中的 value值进行排序。
  10. 现有列表 foo = [[“zs”,19],[“ll”,54],[“wa”,23],[“df”,23],[“xf”,23]],列表嵌套列表排序,如果年龄相同,那么就按照字母排序。

喜欢编程的小伙伴可以加小编的Q群867067945,进群可以领取免费的学习资料哦!群里都是想学习编程的小伙伴哦

版权声明
本文为[python秋枫]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/chenyunhui1994/p/13983905.html

  1. 利用Python爬虫获取招聘网站职位信息
  2. Using Python crawler to obtain job information of recruitment website
  3. Several highly rated Python libraries arrow, jsonpath, psutil and tenacity are recommended
  4. Python装饰器
  5. Python实现LDAP认证
  6. Python decorator
  7. Implementing LDAP authentication with Python
  8. Vscode configures Python development environment!
  9. In Python, how dare you say you can't log module? ️
  10. 我收藏的有关Python的电子书和资料
  11. python 中 lambda的一些tips
  12. python中字典的一些tips
  13. python 用生成器生成斐波那契数列
  14. python脚本转pyc踩了个坑。。。
  15. My collection of e-books and materials about Python
  16. Some tips of lambda in Python
  17. Some tips of dictionary in Python
  18. Using Python generator to generate Fibonacci sequence
  19. The conversion of Python script to PyC stepped on a pit...
  20. Python游戏开发,pygame模块,Python实现扫雷小游戏
  21. Python game development, pyGame module, python implementation of minesweeping games
  22. Python实用工具,email模块,Python实现邮件远程控制自己电脑
  23. Python utility, email module, python realizes mail remote control of its own computer
  24. 毫无头绪的自学Python,你可能连门槛都摸不到!【最佳学习路线】
  25. Python读取二进制文件代码方法解析
  26. Python字典的实现原理
  27. Without a clue, you may not even touch the threshold【 Best learning route]
  28. Parsing method of Python reading binary file code
  29. Implementation principle of Python dictionary
  30. You must know the function of pandas to parse JSON data - JSON_ normalize()
  31. Python实用案例,私人定制,Python自动化生成爱豆专属2021日历
  32. Python practical case, private customization, python automatic generation of Adu exclusive 2021 calendar
  33. 《Python实例》震惊了,用Python这么简单实现了聊天系统的脏话,广告检测
  34. "Python instance" was shocked and realized the dirty words and advertisement detection of the chat system in Python
  35. Convolutional neural network processing sequence for Python deep learning
  36. Python data structure and algorithm (1) -- enum type enum
  37. 超全大厂算法岗百问百答(推荐系统/机器学习/深度学习/C++/Spark/python)
  38. 【Python进阶】你真的明白NumPy中的ndarray吗?
  39. All questions and answers for algorithm posts of super large factories (recommended system / machine learning / deep learning / C + + / spark / Python)
  40. [advanced Python] do you really understand ndarray in numpy?
  41. 【Python进阶】Python进阶专栏栏主自述:不忘初心,砥砺前行
  42. [advanced Python] Python advanced column main readme: never forget the original intention and forge ahead
  43. python垃圾回收和缓存管理
  44. java调用Python程序
  45. java调用Python程序
  46. Python常用函数有哪些?Python基础入门课程
  47. Python garbage collection and cache management
  48. Java calling Python program
  49. Java calling Python program
  50. What functions are commonly used in Python? Introduction to Python Basics
  51. Python basic knowledge
  52. Anaconda5.2 安装 Python 库(MySQLdb)的方法
  53. Python实现对脑电数据情绪分析
  54. Anaconda 5.2 method of installing Python Library (mysqldb)
  55. Python implements emotion analysis of EEG data
  56. Master some advanced usage of Python in 30 seconds, which makes others envy it
  57. python爬取百度图片并对图片做一系列处理
  58. Python crawls Baidu pictures and does a series of processing on them
  59. python链接mysql数据库
  60. Python link MySQL database