数据STUDIO

90+ Python 面试问题及答案

欢迎踏出数据科学面试准备的第一步。这里有一份全面详尽的 Python 面试题库,助你脱颖而出,获得理想的工作!Python 是一种解释型通用编程语言,由于其在人工智能 (AI) 领域的广泛应用,如今需求量巨大。因此,对于每一位数据科学求职者来说,深入了解 Python 中使用的函数至关重要。在你深入学习 Python 语言,为即将到来的面试做好准备时,这些 Python 面试题必将助你走向成功。

Python面试题
Python面试题

本文将深入探讨 Python 编程面试中的关键问题,并介绍一些应对常见 Python 编程问题的有效策略。我们还将提供一些有价值的 Python 面试题和答案,帮助你为下一次面试做好充分的准备。

面向新生的 Python 面试问题和 Python 编码面试问题及答案

Q1. 使用一行代码将给定的字符串转换为 int。

A.  我们可以使用内置函数int()将给定的字符串转换为整数。例如:

a = ‘5’ print(int(a))

变量“a”是一个字符串,现在转换为整数,如下所示:

输出:5

Q2. 编写一段代码片段将字符串转换为列表。

A.   下面是在 Python 中将字符串转换为列表的代码。

str1 = "数据 STUDIO"
print(str1.split(" "))

split() 函数使用定义的分隔符(例如,此处为空格 (" "))分隔给定的字符串。因此,数据和STUDIO会将其拆分成列表中的两个字符串。

输出:['数据', 'STUDIO']

Q3. 编写一段代码片段来反转字符串。

A.   在这里,我们没有使用任何内置函数就反转了一个字符串。

str1 = "PyData STUDIO"
str2 = ""
for i in str1:
    str2 = i + str2
print("The original string is: ", str1)
print("The reversed string is: ", str2)

上述代码选取第一个字母,即“P”,然后在其开头添加“y”。 进一步,将“yP”作为 str2,并在其前面添加“D”,依此类推。 然后,“Dyp”成为 str2,并将下一个字母al”添加到 str2 的开头,使其成为“aDyP”。 上述代码就是这样反转字符串的。

输出:OIDUTS ataDyP

Q4. 编写一段代码片段,在 Python 中对列表进行排序。

A.  我们可以使用 sort() 函数对 Python 中的列表进行排序。以下代码将说明这一点:

my_list = [3, 2, 1]
my_list.sort()
print(my_list)

上述代码使用 sort() 函数对列表进行排序。

输出:[1, 2, 3]

Q5.可变和不可变之间有什么区别?

A.

可变对象:定义后即可更新,例如列表。
不可变对象:不可更新,例如元组。

Q6.如何在 Python 中删除文件?

A.  我们可以使用 os 模块在 Python 中删除文件。os 模块的 remove() 函数用于通过传递文件名作为参数来删除文件。例如

import os
os.remove("txt1.txt")

如何访问列表的元素?

A.  可以使用 list_name [index] 访问列表中的元素。例如:

给定一个列表 [1, 2, 3, 4]。

列表的索引从 0 开始。

可以使用 list[0] 访问列表的第一个元素,它将打印元素“1”。

可以使用 list[1] 访问第二个元素,依此类推。

Q8. 讨论从列表中删除元素的不同方法。

A.  我们可以通过两种方式从列表中删除元素:

  1. 使用 remove() 函数

remove () 函数从列表中删除提到的元素。

list1 = [1, 2, 3, 4]
list1.remove(2)
print(list1)

输出:[1, 3, 4]

  1. 使用 pop() 函数

Pop() 函数从列表中删除特定索引处提到的元素

list1.pop(1)
print(list1)

输出:[1, 4]

Q9. 编写一段代码片段来删除整个列表。

A.  我们可以使用 clear() 函数在 Python 中删除列表。以下代码将说明这一点:

list1 = [1, 2, 3, 4]
list1.clear()

它将删除整个列表。

Q10. 编写一段代码片段来反转一个数组。

A.  反转数组的两种方法如下:

  1. 使用 flip() 函数
import numpy as np
arr1 = np.array([1, 2, 3, 4])
arr2 = np.flip(arr1)
print(arr2)

输出:[4, 3, 2, 1]

  1. 不使用任何功能
import numpy as np
arr1 = np.array([1, 2, 3, 4])
arr2 = arr1[::-1]
print(arr2)

输出:[4,3,2,1]

Q11. 编写一段代码片段来获取、删除和更新数组中的元素。

A.

查找: 我们可以使用 array_name[index] 查找数组的元素。

print(arr[index])

删除:我们可以使用 delete() 函数删除数组的元素。

import numpy as np
arr2 = [1, 2, 3, 4]
x = np.delete(arr2, 0)
print(x)

输出:[2,3,4]

更新:我们可以使用以下语法更新数组的元素:

array_name[index] = element

Q12. 编写一段代码片段来连接列表。

A.  假设给定两个列表:

List1= [“W”, “a”, “w”,”b”]
List2 = [“e”, “ “,”riting”,”log”]

输出:['We', 'a', 'writing', 'blog']

这可以使用 zip() 函数连接两个列表,该函数遍历两个列表并按索引组合它们。

lst1 = ['W', 'a', 'w', 'b']
lst2 = ['e', ' ', 'riting', 'log']
lst3 = [x + y for x, y in zip(lst1, lst2)]
print(lst3)

输出:['We', 'a', 'writing', 'blog']

Q13. 编写一段代码片段来生成列表中每个元素的平方。

A.  首先,创建一个空列表。我们使用 for 循环遍历列表中的每个元素,并将该元素乘以自身,得到它的平方。然后,将其附加到新生成的列表中。

lst = [1, 2, 3, 4]
lst_final = []
for x in lst:
    lst_final.append(x * x)
print(lst_final)

for 循环取第一个元素(即 1),将其与自身相乘,然后将其附加到列表中。然后取第二个元素(即 2),将其与自身相乘,然后将其附加到列表中,依此类推。

输入: [1, 2, 3, 4]

输出: [1, 4, 9, 16]

Q14. range 和 xrange 有什么区别?

A.  在 Python 2 中,range() 返回一个列表,xrange() 返回一个迭代器。但在 Python 3 中,xrange() 不再存在,而 range() 返回一个迭代器。

Q15. Python 中的 pickling 和 unpickling 是什么?

A.  Pickling 是将 Python 对象(列表、字典、函数等)转换为字节流(0 和 1),而 Unpickling 是将字节流转换回 Python 对象。它用于传输和存储各种 Python 对象。我们可以使用 pickle 或 dill Python 包来实现这一点。

Q16. Python 中的 init 是什么?

A.  Python 中使用 __init __ 方法在创建对象时初始化对象的属性。它类似于 Java 或 C++ 中的构造函数。它在类中声明为保留方法。

Q17. PEP-8 风格指南是什么?

A.  为了提高代码的可读性,建议遵循以下编码规范。由于多人协作开发同一个项目,为了提高代码的可读性和一致性,最好遵循类似的风格。但是,如果需要偏离规范,我们可以自行判断应该遵循哪种风格。

Q18. Python 列表和 Numpy 数组哪个更快,为什么?

A.  NumPy 数组的数值运算速度明显快于 Python 列表。NumPy 是一个开源库,旨在利用 C 语言的优化实现,实现高效的 Python 数组运算。与解释型 Python 列表不同,NumPy 数组以编译型语言执行,从而显著提升了性能。

Python 还包含一个用于基本操作的内置array模块,可以使用import array as arr导入。

Q19. Python 列表和元组有什么区别?

A.  在 Python 中,列表是不同类型的对象的有序集合。列表是可变的,这意味着你可以更改列表元素的值,或者在列表中添加或删除元素。列表是使用方括号和逗号分隔的值列表创建的。

元组也是对象的有序集合,但它是不可变的,这意味着你不能更改元组元素的值,也不能从元组中添加或删除元素。

列表使用方括号([''])定义,而元组使用括号(('',))定义。

列表有几种用于添加、删除和操作元素的内置方法,而元组没有这些方法。

一般来说,在 Python 中元组比列表更快。

Q20. 什么是 Python 集合?解释集合的一些属性。

A.  在 Python 中,集合是由唯一对象组成的无序集合。集合通常用于存储不同对象的集合,并执行成员测试(例如,检查某个对象是否在集合中)。集合使用花括号({ 和 })和逗号分隔的值列表来定义。

以下是 Python 中集合的一些关键属性:

  • 集合是无序的:集合没有特定的顺序,因此你不能像列表或元组那样对它们进行索引或切片。
  • 集合是唯一的:集合只允许唯一的对象,因此如果你尝试将重复的对象添加到集合中,则不会添加该对象。
  • 集合是可变的:你可以使用添加和删除方法在集合中添加或删除元素。
  • 集合没有索引:集合不支持索引或切片,因此你无法使用索引查找集合中的各个元素。
  • 集合不可哈希:集合是可变的,因此它们不能用作字典的键或其他集合的元素。如果需要将可变对象用作集合的键或元素,可以使用元组或冻结集合(集合的不可变版本)。

Q21. split 和 join 有什么区别?

A.  split 和 join 都是 Python 字符串的函数,但它们的功能完全不同。

split 函数用于根据某些分隔符(例如空格)从字符串创建列表。

a = 'This is a string'
li = **A.** split(' ')
print(li)

输出: ['This', 'is', 'a', 'string']

join() 方法是 Python str 类的内置函数,用于将字符串列表连接成单个字符串。该方法以分隔符字符串为参数,传入待连接的字符串列表。连接字符串时,分隔符字符串会插入列表中的每个字符串之间。

以下是如何使用 join() 方法的示例:

" ".join(li)

输出:这是一个字符串

此处列表以空格连接。

Q22. 解释 Python 中的逻辑运算。

A.  在 Python 中,逻辑运算 and、or 和 not 可用于对真值(True 和 False)执行布尔运算。

如果两个操作数都为 True,则and运算符返回 True,否则返回 False。

如果其中一个操作数为 True,则或运算符返回 True;如果两个操作数均为 False,则或运算符返回 False。

not运算符将其操作数的布尔值取反。如果操作数为 True,则 not返回 False;如果操作数为 False,则 not返回 True。

Q23. 解释用于 Python 字符串的前 5 个函数。

A.  以下是前 5 个 Python 字符串函数:

  • len():此函数返回字符串的长度。
s = 'Hello, World!'
print(len(s))
13
  • strip():此函数从字符串中删除前导和尾随空格。
s = '   Hello, World!   '
print(s.strip())
'Hello, World!'
  • replace():此函数用另一个字符串替换所有出现的指定字符串。
s = 'Hello, World!'
print(s.replace('World', 'Universe'))
'Hello, Universe!'
  • split():此函数根据分隔符将字符串拆分为子字符串列表。
s = 'Hello, World!'
print(s.split(','))
['Hello', ' World!']
  • upper() 和 lower():这些函数分别将字符串转换为大写或小写。
s = 'Hello, World!'
print(s.upper())
'HELLO, WORLD!'
s.lower()
'hello, world!'

除此之外,string还有capitalize、isalnum、isalpha等方法。

Q24. Python 中 pass 关键字的用途是什么?

A.  Pass 是一个不执行任何操作的空语句。它通常用作占位符,用于语法上需要语句但不需要执行任何操作的情况。例如,如果你想定义一个函数或类,但尚未确定它应该做什么,你可以使用 pass 作为占位符。

Q25. Python 中 continue 关键字的用途是什么?

A.  Continue 在循环中使用,用于跳过当前迭代并转到下一个迭代。遇到 continue 时,循环的当前迭代终止,并开始下一个迭代。

Q26. 什么是不可变和可变数据类型?

A.  在 Python 中,不可变对象是指创建后状态无法修改的对象。这意味着,一旦创建了不可变对象,就无法更改其值。Python 中不可变对象的示例包括数字(例如整数、浮点数和复数)、字符串和元组。

另一方面,可变对象是指创建后状态可以修改的对象。这意味着你可以在创建可变对象后更改其值。Python 中可变对象的例子包括列表和字典。

理解 Python 中不可变对象和可变对象之间的区别非常重要,因为它会影响你在代码中使用和操作数据的方式。例如,如果你有一个数字列表,并且你想按升序对列表进行排序,你可以使用内置的 sort() 方法来实现。但是,如果你有一个数字元组,则不能使用 sort() 方法,因为元组是不可变的。相反,你必须从原始元组创建一个新的排序元组。

Q27. Python 中的 try 和 except 块有什么用途?

A.  Python 中的 try 和 except 块用于处理异常。异常是程序执行过程中发生的错误。

try 块包含可能导致异常的代码。except 块包含在执行 try 块期间引发异常时执行的代码。

使用 try-except 块将防止代码发生错误,并且可以在 except 块中执行我们想要的消息或输出。

Q28. 说出 Python 中的 2 种可变数据类型和 2 种不可变数据类型。

A.  两种可变数据类型是Dictionary和List。你可以更改/编辑 Python 字典和列表中的值。无需创建新列表,这意味着它满足可变性。

两种不可变数据类型是Tuple和String。一旦创建了 Tuple,就无法编辑其字符串或值。你需要将值赋给 Tuple,或者创建一个新的 Tuple。

Q29. 什么是 Python 函数?它们如何帮助代码优化?

A.  在 Python 中,函数是一段可以被程序其他部分调用的代码块。函数很有用,因为它们允许你重用代码,并将代码划分为可单独测试和维护的逻辑块。

在 Python 中调用函数,只需使用函数名,后跟一对括号以及必要的参数即可。函数是否返回值取决于 turn 语句的用法。

函数还可以帮助代码优化:

  • 代码重用:函数允许你将代码封装在一个地方,然后在程序的不同部分多次调用,从而实现代码重用。这有助于减少冗余,使代码更简洁、更易于维护。
  • 提高可读性:通过将代码划分为逻辑块,函数可以使代码更具可读性,更易于理解。这可以更轻松地识别错误并更改代码。
  • 更容易测试:函数允许你单独测试各个代码块,从而可以更轻松地查找和修复错误。
  • 提高性能:函数还可以通过允许你使用优化的代码库或允许 Python 解释器更有效地优化代码来帮助提高代码的性能。

Q30. 为什么 NumPy 在数据科学领域如此受欢迎?

A.  NumPy(Numerical Python 的缩写)是 Python 中一个流行的科学计算库。它在数据科学界广受欢迎,因为它提供了快速高效的工具来处理大型数值数据数组和矩阵。

NumPy 提供对数值型数组和矩阵的快速高效操作。它使用优化的 C 和 Fortran 代码在后台执行这些操作,这使得它们比使用 Python 内置数据结构执行的等效操作快得多。它提供了用于处理大型数值型数组和矩阵的快速高效工具。

NumPy 提供了大量函数用于对数组和矩阵执行数学和统计运算。

它允许你高效地处理大量数据。它提供了处理内存无法容纳的大型数据集的工具,例如用于读取和写入磁盘数据的函数,以及一次仅将数据集的一部分加载到内存中的函数。

NumPy 与 Python 中的其他科学计算库(例如 SciPy(科学 Python)和 pandas)集成良好。这使得 NumPy 可以轻松地与其他 Python 库一起使用,以执行更复杂的数据科学任务。

Q31. 解释列表推导和字典推导。

A.  列表推导和字典推导都是从现有可迭代对象创建新列表或字典的简洁方法。

列表推导式是一种创建列表的简洁方法。它由方括号组成,方括号内包含一个表达式,后跟一个 for 子句,然后是零个或多个 for 或 if 子句。结果是一个新列表,该列表在 for 和 if 子句的上下文中对表达式进行求值。

字典推导式是一种创建字典的简洁方法。它由包含键值对的花括号、后跟 for 子句以及零个或多个 for 或 if 子句组成。结果是一个新的字典,它会在 for 和 if 子句的上下文中对键值对进行求值。

Q32. Python 中的全局变量和局部变量是什么?

A.  在 Python 中,在任何函数或类之外定义的变量是全局变量,而在函数或类内部定义的变量是局部变量。

全局变量可以在程序的任何位置查找,包括在函数和类内部。然而,局部变量只能在定义它的函数或类内部查找。

值得注意的是,全局变量和局部变量可以使用相同的名称,但在定义它的函数或类中,局部变量将优先于全局变量。

# This is a global variable
x = 10
deffunc():
# This is a local variable
    x = 5
    print(x)
func()
print(x)

输出:这将打印 5,然后打印 10

在上面的例子中,func() 函数内部的变量 x 是局部变量,因此它优先于全局变量 x。因此,当在函数内部打印 x 时,会打印 5;当在函数外部打印 x 时,会打印 10。

Q33. 什么是有序字典?

A.  有序字典,也称为 OrderedDict,是 Python 内置字典类的子类,用于维护元素的添加顺序。在常规字典中,元素的顺序由其键的哈希值决定,随着字典的增长和演变,哈希值会随时间而变化。另一方面,有序字典使用双向链表来记录元素的顺序,因此无论字典如何变化,元素的顺序都会保持不变。

Q34. return 和 yield 关键字有什么区别?

A.  Return 用于退出函数并返回一个值给调用者。遇到 return 语句时,函数立即终止,并将 return 语句后面的表达式的值返回给调用者。

另一方面,yield 用于定义生成器函数。生成器函数是一种特殊的函数,它一次生成一个值序列,而不是返回单个值。当遇到 yield 语句时,生成器函数会生成一个值并暂停执行,保存其状态以供后续操作。

Q35. Python 中的 lambda 函数是什么?为什么它们很重要?

A.  Python 支持 lambda 函数,它是一个小型匿名函数。当你不想使用 def 关键字定义函数时,可以使用 lambda 函数。

当你需要在短时间内使用一个小函数时,Lambda 函数非常有用。它们通常与高阶函数(例如 map()、filter() 和 reduce())结合使用。

以下是 Python 中 lambda 函数的示例:

a = lambda x: x + 10
a(5)

15

在此示例中,lambda 函数接受一个参数 (x),并将其加 10。lambda 函数在调用时返回此运算的结果。

Lambda 函数非常重要,因为它允许你以简洁的方式创建小型匿名函数。它们通常用于函数式编程(一种强调使用函数解决问题的编程范式)。

Q36. Python 中 'assert' 关键字有什么用途?

A.  在 Python 中,assert 语句用于测试条件。如果条件为 True,则程序继续执行。如果条件为 False,则程序引发 AssertionError 异常。

assert 语句通常用于检查程序的内部一致性。例如,在对列表执行二分查找之前,可以使用 assert 语句检查列表是否已排序。

需要注意的是,assert 语句用于调试目的,并非用于处理运行时错误。在生产代码中,应该使用 try 和 except 块来处理运行时可能引发的异常。

Q37. Python 中的装饰器是什么?

A.  在 Python 中,装饰器是一种在不更改源代码的情况下修改或扩展函数、方法或类功能的方法。装饰器通常实现为函数,它接受另一个函数作为参数,并返回一个具有所需行为的新函数。

我们可以使用@decorator_function 语法将装饰器函数添加到我们要应用的函数之前来使用它。

Q38. Python 中的内置数据类型有哪些?

A.  Python 中的 5 种内置数据类型是:None 类型、数字类型(int、float、complex、bool)、序列类型(list、tuple、range、str)、映射类型(字典)和集合类型(set、frozenset)。

Q39. Set 和 frozenset 有什么区别?

A.  冻结集是集合的不可变变体,就像元组是不可变变体列表一样。

Q40. 我们可以在哪里使用元组而不是列表?

A.  我们可以使用元组作为字典的键,因为它们是可哈希的。由于元组是不可变的,如果我们不希望值改变,那么使用它更安全。元组速度更快,占用的内存更少,所以我们可以使用元组来仅查找元素。

Q41. 在 Python 列表中,删除第一个项目和最后一个项目是否花费相同的时间?

A.  不,删除最后一个项的时间复杂度为 O(1),而删除第一个项的时间复杂度为 O(n)。

Q42. 如何有效地从列表中删除任何元素?

A.  我们可以使用 collections 模块中的双端队列(以双向链表的形式实现)来更快地删除任意索引处的元素。

Q43. 什么是负索引?

A.  Python 序列数据类型可以使用正数和负数查找。负数索引表示 -1 指向最后一个元素,-2 指向倒数第二个元素,依此类推。

Q44. 为什么 Python 中的浮点计算看起来不准确?

A.  虽然用十进制表示像 2.5 这样的浮点数比较容易,但在二进制中表示同样的浮点数则需要大量的信息。由于位数有限,浮点计算中可能会出现舍入误差。

Q45. Python 中的 docstring 是什么?

A.  Docstring 是文档字符串的缩写。它是一种字符串,用于记录函数或类的工作原理、各种输入参数以及函数或类的使用示例。它用三重引号(""" """)括起来。编写良好的文档字符串有助于人们理解函数或类的用法。

Q46. Python 中的*args 和**kwargs是什么?

A.  *args 和**kwargs 分别表示可变长度参数和可变长度关键字参数的语法。这里*和** 表示语法,而 args 和 kwargs 是约定俗成的词语。我们也可以使用其他词语。

Q47. Python 中的生成器是什么?

A.  Python 中的生成器返回一个迭代器,该迭代器每次生成一个值序列。我们使用 yield 关键字来生成值。

Q48. Python 中的生成器有什么用途?

A.  由于生成器不会同时生成所有值,因此如果我们使用生成器来处理值序列而无需保存初始值,则可以节省内存。

Q49. 如何同时遍历多个列表?

A.  我们可以使用 zip() 函数聚合多个列表并返回一个元组迭代器,其中每个元组包含同一索引的不同列表的元素。

Q50. 向列表添加元素有哪些不同的方法?

A.  以下是向列表添加元素的各种方法:

  1. 我们可以使用 insert() 将给定索引添加到现有列表中。
  2. 我们可以使用 append() 在列表末尾添加单个项目。
  3. 我们可以使用extend()在列表末尾分别添加可迭代对象(列表、元组或集合)的每个元素。
  4. 我们还可以使用 + 运算符来连接两个列表,类似于扩展,但它仅适用于一个列表到另一个列表,而不适用于一个列表到另一个元组或集合。

Q51. 编写一个程序来检查一个数字是否为素数。

A.

from math import sqrt

defprime_or_not(number):
for i in range(2, int(sqrt(number)) + 1):
if number % i == 0:
return0
return1

Q52. 上述程序的时间复杂度是多少?有没有更快的方法?

A.  它的时间复杂度为 O(sqrt(n))。我们可以使用埃拉托斯特尼筛法更快地完成此操作。

Q53. 交换两个元素的值有哪些方法?

A.  一种方法是使用第三个变量

temp = a
a = b
b = temp

在 Python 中,我们也可以不使用第三个变量

a,b = b,a

Q54. 用 Python 编写一个程序,使用递归返回给定数字的阶乘。

A.

def factorial(n):
if n 
== 1:
return n
else:
return n * factorial(n - 1)

Q55. 有没有比上述方法更快地计算阶乘的方法?

A.  我们可以使用分治算法来加快计算速度。它是在内置数学库 math.factorial() 中实现的。

Q56. 如何使用 lambda 函数在列表中找到最小值?

A.

from functools import reduce

reduce(lambda x, y: x if x < y else y, b)

这将给出列表中的最小值。

Q57. 编写代码将一串字符转换为以逗号分隔的字符串。

A.

‘,’.join(list)

Q58. 编写一个代码,使用列表推导式仅选择奇数。

A.

[i for i in range(n) if i%2 != 0]

Q59. 列表上的 del 和 remove 有什么区别?

A.  “Remove”删除给定元素的第一次出现。“Del”根据给定的索引删除元素。

Q60. 编写代码获取字典中的最小值。

A.

dict_[min(dict_.keys(), key=(lambda k: dict_[k]))

Q61. 编写一个程序返回一组元组的平均值。

A.

defmean_tuple(numbers):
    result = [sum(x) / len(x) for x in zip(*numbers)]
return result

Q62. Python 中 self 有什么用途?

A.  Self 用于表示类的实例。通过它,我们可以通过对象访问类的属性和方法。它将对象的属性与给定的参数绑定在一起。Self 不是关键字。我们也可以使用任何其他非关键字,但最好遵循约定。

Q63. Python OOP 中有哪些不同类型的变量?

A.  Python OOP(面向对象编程)中的 3 种不同类型的变量是:

  1. 类变量:它们在类内部但在其他方法之外定义,并且可供类的任何实例访问。
  2. 实例变量:它们为类的每个实例单独定义,并可由该类的实例访问。
  3. 局部变量:它们在方法内部定义并且只能在该方法内部访问。

Q64. Python OOP 中有哪些不同类型的方法?

A.  Python OOP 中的 3 种不同类型的方法是:

  1. 类方法:它们只能访问类变量,并用于修改类状态。
  2. 实例方法:它们可以访问类和实例变量,并用于修改对象(类的实例)状态。
  3. 静态方法:它们不能访问类或实例变量,并且可以用于适合在类中而不访问类或实例变量的函数。

Q65. 什么是继承?它有什么用处?

A.  通过继承,我们可以在子类中使用父类的属性和方法。我们还可以修改父类的方法以适应子类。

Q66. 什么是访问说明符?

A.  我们可以使用(下划线_) 或__(双下划线) 来表示受保护变量和私有变量。它们可用于限制对类属性的访问。

Q67. 在 numpy 中, array[:, 0] 与 array[:[0]] 有何不同?

A.array[:, 0] 将第一列作为 1D 数组返回。

array[:, [0]] 以多维数组的形式返回第一列。

Q68. 如何检查仅含零的数组?

A.  我们可以使用数组的 size 方法来检查它是否返回 0。如果返回 0,则表示该数组只能包含零。

Q69. 如何连接两个数组?

A.  我们可以使用连接方法。

import numpy as np

a = np.array([[10, 4], [8, 12]])
b = np.array([[15, 6]])
c = np.concatenate((a, b), axis=0)

输出

[[10, 4] [8, 12] [15, 6]]

Q70. 我们如何检查数组的局部最大值?

A.  局部最大值是指一个点比其两侧相邻的点都大。在给定的数组中,以下代码可以生成局部最大值点。

np.where((arr[1:-1] > arr[0:-2]) * (arr[1:-1] > arr[2:]))[0] + 1

Q71. split() 和 array_split() 之间有什么区别?

A.split() 函数用于将数组拆分成 n 个相等的部分。如果无法将数组拆分成相等数量的部分,split() 会引发错误。另一方面,array_split() 会将数组拆分成 n 个不相等的部分。

Q72. 编写代码在数组中所有元素的字符之间插入逗号。

A.

resulted_arr = np.char.join(",", array)

Q73. 如何将 1 添加到现有数组的所有边?

A.  我们可以使用 numpy 的 pad 方法。

New_arr = np.pad(existing_arr, pad_width=1, mode='constant', 
constant_values=1)

Q74. 如何交换 numpy 数组的轴?

A.  我们可以使用 swapaxes 方法。

np.swapaxes(arr,0,1)

Q75. 如何获取给定数组中 n 个最大值的索引?

A.  argsort() 方法返回可以对数组进行排序的索引。

array.argsort()[-N:][::-1] 

这给出了 n 个最大值的索引。

Q76. Pandas 中的分类数据是什么?

A.   当一个变量的可能值数量有限时,我们可以对该变量使用类别数据类型,该变量在内部用数字表示,因此处理速度更快。

Q77. 如何在数据框中将真/假值转换为 1/0?

A.

df["column"] = df["column"].astype(int)

Q78. loc() 和 iloc() 有何不同?

A.loc() 用于使用标签访问行或列,而 iloc() 用于使用基于位置的索引进行访问。

如何按两列对数据框进行排序?

A.

df.sort_values(by=['col1', 'col2'])

Q80. 找出给定列中具有最大值的行。

A.  我们可以使用 idmax 方法。

df['column'].idxmax() 

这将返回具有指定列的最大值的行索引。

Q81. 如何将包含字符串的列拆分为多个列?

A.

df['column'].str.split(pat=" ", expand=True)

这里我们可以使用 pat 参数指定拆分列的模式。

Q82. map()和applymap()之间有什么区别?

A.  虽然它们都可以用于元素操作,但 map() 用于序列,而 applymap() 用于数据框。

Q83. 我们如何将查询的 True 值转换为 False 以及反之亦然?

A.   我们可以使用波浪号 (~) 运算符将 True 值转换为 False,反之亦然。

Q84. 我们如何找到从一行到另一行的百分比变化?

A.  我们可以使用以下代码来查找上一行与当前行之间的百分比变化。

df.pct_change(periods=1)

Q85. 我们如何找到数据框列的变异系数?

A.  由于变异系数是标准差除以平均值,我们可以使用 df.std()/df.mean()

Q86. 如何删除字符串的前导空格?

A.   我们可以使用 .lstrip() 方法删除字符串的前导空格。

Q87. Python 中的 enumerate() 是什么?

A.  Python 中的 enumerate() 迭代一个序列并返回索引位置及其对应的值。

Q88. 什么是深拷贝(deepcopy)和浅拷贝(shallowcopy)?

A.  深度复制将对象的内容复制到另一个位置。对一个对象所做的更改不会影响另一个对象。浅复制仅复制引用。因此,对一个对象所做的更改会影响另一个对象。

Q89. Python 中的可调用对象是什么?

A.  可以调用进程的对象是可调用对象。它使用__call__方法。函数就是一个例子。可调用对象以()结尾,而非可调用方法则没有以 () 结尾。

Q90. 如何使用 Numpy 查找列表中的唯一元素和值计数?

A.   我们可以使用 numpy.unique(list, return_counts=True)这将在两个数组中返回值及其计数。

Q91. NumPy 中的索引和切片有什么区别?

A.  索引会创建索引,而切片会进行浅拷贝。索引可以有多种类型,但没有切片类别。

写在最后

呼!这篇内容丰富的文章终于完结了。希望这些 Python面试题和答案对你有所帮助。我相信你们都从中学到了一些知识,并且对下一次面试充满信心。这些 Python 编程面试题也可以作为 Python 新手和中级程序员的教程,涵盖了大多数 Python 开发人员常用的功能。我们在本文中涵盖了 Python 面试题的所有内容。

希望你喜欢这篇文章!Python 编程面试题通常侧重于语法、数据结构和算法等基础主题。了解常见的 Python 编程题能帮助你在面试中取得好成绩。练习 Python 面试题和答案是准备技术测试的好方法。理解这些 Python 面试题能让你更有信心,并提高面试时的解决问题能力。