2024年最全Python面试题大全(一):基础知识学习

l1 = [‘b’,‘c’,‘d’,‘c’,‘a’,‘a’]

l2 = list(set(l1))

l2.sort(key=l1.index)

print(l2)

也可以这样写:

l1 = [‘b’,‘c’,‘d’,‘c’,‘a’,‘a’]

l2 = sorted(set(l1),key=l1.index)

print(l2)

也可以用遍历:

l1 = [‘b’,‘c’,‘d’,‘c’,‘a’,‘a’]

l2 = []

for i in l1:

if not i in l2:

l2.append(i)

print(l2)

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

A,B 中相同元素: print(set(A)&set(B))

A,B 中不同元素: print(set(A)^set(B))

企业面试题


15.python新式类和经典类的区别?

a. 在python里凡是继承了object的类,都是新式类

b. Python3里只有新式类

c. Python2里面继承object的是新式类,没有写父类的是经典类

d. 经典类目前在Python里基本没有应用

16.python中内置的数据结构有几种?

a. 整型 int、 长整型 long、浮点型 float、 复数 complex

b. 字符串 str、 列表 list、 元祖 tuple

c. 字典 dict 、 集合 set

d. Python3 中没有 long,只有无限精度的 int

17.python如何实现单例模式?请写出两种实现方式?

第一种方法:使用装饰器

def singleton(cls):

instances = {}

def wrapper(*args, **kwargs):

if cls not in instances:

instances[cls] = cls(*args, **kwargs)

return instances[cls]

return wrapper

@singleton

class Foo(object):

pass

foo1 = Foo()

foo2 = Foo()

print(foo1 is foo2) # True

第二种方法:使用基类 New 是真正创建实例对象的方法,所以重写基类的new 方法,以此保证创建对象的时候只生成一个实例

class Singleton(object):

def new(cls, *args, **kwargs):

if not hasattr(cls, ‘_instance’):

cls._instance = super(Singleton, cls).new(cls, *args, **kwargs)

return cls._instance

class Foo(Singleton):

pass

foo1 = Foo()

foo2 = Foo()

print(foo1 is foo2) # True

第三种方法:元类,元类是用于创建类对象的类,类对象创建实例对象时一定要调用call方法,因此在调用call时候保证始终只创建一个实例即可,type是python的元类

class Singleton(type):

def call(cls, *args, **kwargs):

if not hasattr(cls, ‘_instance’):

cls._instance = super(Singleton, cls).call(*args, **kwargs)

return cls._instance

Python2

class Foo(object):

metaclass = Singleton

Python3

class Foo(metaclass=Singleton):

pass

foo1 = Foo()

foo2 = Foo()

print(foo1 is foo2) # True

18.反转一个整数,例如-123 --> -321

class Solution(object):

def reverse(self,x):

if -10<x<10:

return x

str_x = str(x)

if str_x[0] !=“-”:

str_x = str_x[::-1]

x = int(str_x)

else:

str_x = str_x[1:][::-1]

x = in

  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以为您介绍一些Python基础面试。以下是一些常见的Python基础面试及其答案: 1. Python中的列表和元组有什么区别? 答:列表和元组都是Python中的数据结构,但有几个关键的区别: - 列表是可变的,可以通过索引进行修改,而元组是不可变的,不能修改。 - 列表使用方括号 [] 表示,元组使用圆括号 () 表示。 - 列表通常用于存储多个相关的项目,而元组通常用于表示一个不可变的数据集合。 2. Python中的字典是什么?如何访问和修改字典中的值? 答:字典是Python中的一种数据结构,用于存储键值对。可以使用键来访问和修改字典中的值。例如: - 修改字典中的值:dict_name[key] = new_value 3. 什么是Python中的迭代器和生成器? 答:迭代器是一个对象,它可以在遍历时逐个返回值。生成器是一种特殊类型的迭代器,它使用 yield 语句来生成值。生成器可以节省内存,并且在需要时才生成值。 4. Python中的装饰器是什么?如何使用装饰器? 答:装饰器是一种Python语法,用于修改函数的行为。它们允许在不修改原始函数代码的情况下添加额外的功能。装饰器使用 @ 符号来应用于函数。例如: ``` @decorator def function_name(): # 函数体 ``` 5. Python中的异常处理是什么?如何使用 try-except 语句处理异常? 答:异常处理是一种机制,用于处理程序运行时可能出现的错误。可以使用 try-except 语句来捕获和处理异常。例如: ``` try: # 可能引发异常的代码 except ExceptionType: # 异常处理代码 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值