当前位置: 首页 > news >正文

深圳沙井做网站公司长沙网站建设 599

深圳沙井做网站公司,长沙网站建设 599,基于superslide2的wordpress幻灯片,淮安做网站公司Python面试必知100例。收集整理了目前Python岗位常见的面试题,希望大家通过学习理解相关知识点。下面介绍的是11~15道题。 十一、请介绍下Python中单下划线与双下划线区别 在Python中,单下划线和双下划线主要用于命名变量和方法,而它们具有不…

Python面试必知100例。收集整理了目前Python岗位常见的面试题,希望大家通过学习理解相关知识点。下面介绍的是11~15道题。

十一、请介绍下Python中单下划线与双下划线区别

在Python中,单下划线和双下划线主要用于命名变量和方法,而它们具有不同的含义。

  1. 单下划线 _
  • 单下划线开头(例如 _var)是一种约定,用来指示这个名称是供内部使用的。它告诉读代码的人该变量或者方法主要被用于类或模块的内部,尽管Python并不会真正地阻止你在外部访问它。
class MyClass:def __init__(self):self._internal_var = 10def internal_method(self):passobj = MyClass()
print(obj._internal_var)  # 可以访问,但是应该避免这么做
  1. 双下划线 __
  • 双下划线开头(例如 __var)表示这个变量或方法不仅仅是用于内部,Python会对其进行名称修饰(name mangling),用来避免命名冲突。这意味着类定义中以双下划线开头的名称如 __var 实际上会被改写为 _classname__var
class MyClass:def __init__(self):self.__internal_var = 10obj = MyClass()
print(obj.__internal_var)  # 这会引发AttributeError错误
print(obj._MyClass__internal_var)  # 这样可以访问

双下划线开头和结尾的变量(例如 var)是特殊变量,它们有特殊的含义,这些变量通常被称为"魔术"变量或方法。比如 initstr 等。

class MyClass:def __init__(self, value):self.value = valuedef __str__(self):return f"MyClass with value {self.value}"obj = MyClass(10)
print(obj)  # 输出:MyClass with value 10

十二、一个服务器有4GB的内存,怎么去读取5GB 的数据?

当需要处理的数据集大于可用内存时,我们不能一次性将所有数据加载到内存中。但我们可以使用一些策略来处理这种情况:

  1. 分块处理(Chunking):这种方法涉及到将数据分割成小块,每次只读取一部分到内存中进行处理。例如,如果你正在处理一个大文件,你可以使用Python的文件读取方法,如read(size)readline(),每次只读取一部分数据。
  2. 流处理(Streaming):如果数据可以按照某种顺序处理,你可以使用流处理,也就是一次处理一个数据项,然后丢弃它,再处理下一个。这种方式常常用于处理日志文件或网络流等。
  3. 使用内存映射文件:内存映射文件是一种将文件的一部分或全部映射到内存空间的技术,使得这部分文件能够像内存一样被访问。Python的mmap模块提供了这种功能。但需要注意的是,这种方法适用于随机访问文件,不适合顺序读取大文件。
  4. 使用分布式计算:如果数据非常大,而且不能在单机上处理,那么可以考虑使用分布式计算框架,如Hadoop或Spark,将数据分布在多个机器上进行处理。

十三、如何对列表中的元素进行去重?

在Python中,对列表进行去重的一个常见方法是使用set数据结构,然后再转回到list。因为在set中,所有元素都是唯一的。以下是一个简单的代码示例:

def remove_duplicates(lst):return list(set(lst))original_list = [1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9]
print(remove_duplicates(original_list))  # 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]

需要注意的是,使用set进行去重会丢失原始列表的顺序。如果你希望保留元素的顺序,你可以使用dict从Python 3.7开始,字典保持了插入顺序,所以我们可以通过将列表元素作为字典的键来达到去重且保持顺序的效果。

def remove_duplicates_keep_order(lst):return list(dict.fromkeys(lst))original_list = [1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9]
print(remove_duplicates_keep_order(original_list))  # 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]

十四、如果列表里面的元素是字典,怎么对列表里面的元素进行去重?

在Python中,列表的元素如果是字典的话,通常情况下不能直接进行去重,因为字典是不可哈希的(unhashable),不能被用作集合(set)或字典的键。但我们可以通过一些其他的方法来去重。

  1. 使用json序列化:我们可以先将字典转化为JSON字符串,然后添加到集合(set)中,因为集合会自动去重。然后再将去重后的JSON字符串转回字典。
import json# 列表中的元素是字典
list_of_dicts = [{"a": 1, "b": 2}, {"a": 1, "b": 2}, {"a": 3, "b": 4}]# 初始化一个空集合来存储json字符串
json_set = set()# 遍历列表中的每个字典
for d in list_of_dicts:# 将字典转化为排序后的json字符串,然后添加到集合中json_set.add(json.dumps(d, sort_keys=True))# 初始化一个空列表来存储去重后的字典
unique_dicts = []# 遍历集合中的每个json字符串
for i in json_set:# 将json字符串转回字典,然后添加到列表中unique_dicts.append(json.loads(i))print(unique_dicts)
  1. 使用元组作为键
# 列表中的元素是字典
list_of_dicts = [{"a": 1, "b": 2}, {"a": 1, "b": 2}, {"a": 3, "b": 4}]# 初始化一个空集合来存储元组
tuple_set = set()# 遍历列表中的每个字典
for d in list_of_dicts:# 将字典的键值对排序后转化为元组,然后添加到集合中tuple_set.add(tuple(sorted(d.items())))# 初始化一个空列表来存储去重后的字典
unique_dicts = []# 遍历集合中的每个元组
for t in tuple_set:# 将元组转回字典,然后添加到列表中unique_dicts.append(dict(t))print(unique_dicts)

十五、请列举一些正则相关的用法

正则表达式是处理字符串的强大工具,它可以用于匹配、查找、替换特定模式的字符串。Python中的re模块提供了正则表达式相关的操作。
以下是一些基本的正则表达式的使用方法:

  1. 查找匹配的字符串:**re.search()**函数会在字符串中搜索匹配正则表达式的第一个位置,并返回一个匹配对象,如果没有找到匹配的则返回None。
import reresult = re.search('Python', 'I love Python')
if result:print("Match found")
else:print("Match not found")
  1. 查找所有匹配的字符串:**re.findall()**函数会返回一个列表,包含字符串中所有匹配正则表达式的部分。
import reresult = re.findall('a', 'I am a Python developer')
print(result)  # 输出:['a', 'a', 'a']
  1. 替换匹配的字符串:**re.sub()**函数会将字符串中匹配正则表达式的部分替换为指定的字符串。
import reresult = re.sub('Python', 'Java', 'I am a Python developer')
print(result)  # 输出:'I am a Java developer'
  1. 分割字符串:**re.split()**函数可以按照正则表达式匹配的部分来分割字符串。
import reresult = re.split('\s', 'I am a Python developer')
print(result)  # 输出:['I', 'am', 'a', 'Python', 'developer']
  1. 编译正则表达式:如果你有一个正则表达式需要重复使用,那么可以使用**re.compile()**来提前编译这个正则表达式,这样可以提高效率。
import repattern = re.compile('Python')
result = pattern.search('I love Python')
print(result.group())  # 输出:'Python'

以上都是一些基本的用法,实际上正则表达式的功能远不止于此,它有很多的匹配模式和特殊序列可以用于处理复杂的字符串匹配和操作。

关注我,后续题目不断更新中

http://www.yayakq.cn/news/184855/

相关文章:

  • 成都网站建设企业最专业 汽车网站建设
  • 郑州网站设计价格wordpress模板游戏推广
  • 做网页的it网站淮南 小学网站建设
  • 在哪个网站可以做行测题河北商城网站建设价格
  • 男生做污污事的视频网站手机网站开发专业
  • 门户网站建设百度文库哈尔滨制作网站多少钱
  • 给企业做网站大型网站 建设意义
  • ps手绘网站有哪些品牌网站开发公司
  • 温州市建设工程管理网站如何制作个人网页文档
  • 如何高效建设品牌网站建站工具 ip
  • 一个简单的游戏网站建设网站后台选项卡效果
  • js 网站怎么做中英文建立网站要钱吗?
  • 网站的空间是推广普通话的手抄报怎么画
  • 网站字体一般是什么字体织梦网站后台密码错误
  • 小企业网站建设服务域名有关的网站
  • 岳阳网站开发收费移动应用开发专业就业前景
  • 域名购买成功后网站怎么建设个人网站样式
  • 做网站教程和维护网站办宽带需要多少钱一月
  • 黔南州建设局网站网站重新建设的通知
  • 帮别人做网站要投资吗江北关键词优化排名seo
  • 菏泽市住房和城乡建设局网站国内一家做国外酒店团购的网站
  • 住房和城乡建设部课题网站花都网站(建设信科网络)
  • 网站建设的公司这个网站做中英文切换
  • 设计门户网站装修设计培训机构
  • 深圳网站优化计划域名购买哪个网站好
  • 湖州网站设计公司网站维护中页面模板
  • 英语培训机构网站建设策划书网站推广营销服务
  • 网站建设建站知识微信平台推广方法
  • 做的好的微信商城网站黄页网怎么样
  • 专业网站开发开发网站项目评价