IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 面试必问-Python篇(三) -> 正文阅读

[Python知识库]面试必问-Python篇(三)

一、前言

本专栏将会对近年高频测试相关面试题做详细解答,结合自己多年工作经验,以及同行大佬指导总结出来的。旨在帮助测试、python方面的同学,顺利通过面试,拿到自己满意的offer。

让我们一起卷起来吧!

上期文章地址:《面试必问-Python篇(二)》



二、 试题详解

1)如何遍历一个列表同时获得它的索引和元素值:

使用内置的高阶函数enumerate

a = ['a', 'b', 'c']
for i, value in enumerate(a):
    print(i, value)

输出结果

0 a
1 b
2 c

2)什么是上下文管理器

任何实现了 enter() 和 exit()方法的对象都可称之为上下文管理器,上下文管理器对象可以使用 with 关键字。如常见的打开文件操作代码:

with open('test.txt', encoding='utf-8') as f:
    print(f.readlines())

它与下面的代码意义是一样的:

f = open('test.txt', encoding='utf-8')
print(f.readlines())
f.close()

使用with等于自动帮我们执行了f.close(),open(打开文件)的代码如下所示:

class Open(object):

    def __init__(self, filename, **kwargs):
        self.f = open(filename, **kwargs)

    def __enter__(self): #调用方法时首先执行
        return self.f

    def __exit__(self, exc_type, exc_val, exc_tb): #执行完成后要做的操作
        self.f.close()


with Open('test.txt', encoding='utf-8') as f:
    print(f.readlines())


上下文管理器也等同于try、expect、finally模式,如下所示:

f = open('1.txt', 'wb')
try:
    f.readlines()
except:
    pass
finally:  # 不管是否抛出异常,始终最后都会执行这一步
    f.close()

3)fun(*args,** kwargs)中的 *args,**kwargs是什么意思

*args

*args**kwargs主要用于函数定义。你可以将不定数量的参数传递给一个函数。这里的不定的意思是:预先并不知道函数使用者会传递多少个参数给你所以在这个场景下使用这两个关键字。

*args是用来发送一个非键值对的可变数量的参数列表给一个函数这里有个例子帮你理解这个概念:

def test(*args):
    print('传入的参数:',args)
    for parm in args:
        print(parm)


test('a', 'b', 'c')

输出结果

传入的参数: ('a', 'b', 'c')
a
b
c

可以看到可以传递多个参数给*args


**kwargs

**kwargs允许你将不定长度的键值对作为参数传递给一个函数。如果你想要在一个函数里处理带名字的参数你应该使用**kwargs
这里有个例子帮你理解这个概念kwargs:允许你将不定长度的键值对作为参数传递给一个函数,如果你想要在一个函数里处理带名字的参数你应该使用**kwargs,这里有个例子帮你理解这个概念:

def test(**kwargs):
    print('传入的参数:', kwargs)
    for parm in kwargs:
        print(parm)

test(a=1, b=2, d=3)

输出结果

传入的参数: {'a': 1, 'b': 2, 'd': 3}
a
b
d

4)Python断言方法说明及举例

assert为python的断言方法,当断言判断成功时,程序继续执行,判断不成功时则抛出AssertionError异常:

a = 3
assert a > 2
print('断言成功!程序继续执行')
assert a > 3  # 断言失败,不会执行后面的代码
print('断言失败!但我不会被执行')

输出结果

AssertionError

5)Python的filter函数说明及举例

filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回True或 False,最后将返回True的元素放到新列表。

举例:有一个元素全为数字的列表,过滤出其中的大于10的元素并返回新列表

1. 普通函数实现

def fn(v):
    return v > 10

a = [1, 18, 10, 12, 3, 6, 9, 33, 26, 9]
b = filter(fn, a)
print(list(b))

2. 匿名函数实现

a = [1, 18, 10, 12, 3, 6, 9, 33, 26, 9]
b = filter(lambda x: x > 10, a)
print(list(b))

输出结果

[18, 12, 33, 26]

6)Python的列表推导式

列表推导式是Python构建列表(list)的一种快捷方式,可以使用简洁的代码就创建出一个列表。

如果我们要走一个列表中找出大于10的元素放在一个新的列表中,传统的实现代码是这样的:

old_list = [1, 18, 10, 12, 5, 6, 9, 33, 26, 7]
new_list = []
for v in old_list:
    if v > 10:
        new_list.append(v)
print('元素都大于10的列表:', new_list)

转换为列表推导式的实现如下:

old_list = [1, 18, 10, 12, 5, 6, 9, 33, 26, 7]
new_list = [v for v in old_list if v > 10]
print('元素都大于10的列表:', new_list)

输出结果

元素都大于10的列表: [18, 12, 33, 26]

7)如何统计一个列表元素重复的次数

1、可以直接使用内置库collections中的Counter方法:

str_v = '132132143256753'
res = Counter(str_v)
print(res)

输出结果

Counter({'3': 4, '1': 3, '2': 3, '5': 2, '4': 1, '6': 1, '7': 1})

2、手写代码:

str_v = '132132143256753'
res = {}
for v in str_v:
    if v not in res:
        res[v] = 0
    res[v] += 1
print(res)

8)python合并列表有哪些方法

1、使用"+"号:

a = [1, 2, 3]
b = [1, 3]
c = a + b
print(c)

2、使用extend方法:

a = [1, 2, 3]
b = [1, 3]
a.extend(b)
print(a)

使用"+“和extend的区别在于:”+"号会生成一个新的列表,而extend是直接在原列表中进行操作。


9)x=(1,),x=(1),x=(“1”)有什么区别

1、x=(1,)会生成一个元组:

x = (1,)
print(x, type(x))

输出结果

(1,) <class 'tuple'>

2、x=(1)会生成一个整型数字:

x = (1)
print(x, type(x))

输出结果

1 <class 'int'>

3、x=(“1”)会生成一个字符串数字:

x = ("1")
print(x, type(x))

输出结果

1 <class 'str'>

10)Python如何反转一个字符串

方法一:切片

str_v = 'abcdEf'
print(str_v[::-1])

输出结果

fEdcba

方法二:反转列表法

str_v = 'abcdEf'
str_v = list(str_v)
str_v.reverse()
str_v = ''.join(str_v)
print(str_v)

第二种方法太复杂了,优先使用第一种。


三、总结

本章节的面试题比较常见,在面试中被问的频率还是非常高的,大家需要重点注意一下!

有疑问的话欢迎call我,在线解答。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-14 22:33:54  更:2022-06-14 22:34:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 5:25:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计