草庐IT

Pythonic

全部标签

python - 将包的 __init__.py 模块用于通用抽象类是 pythonic 吗?

我正在按照python3中的面向对象模型为我的公司开发一个相当复杂的应用程序。该应用程序包含多个包和子包,每个包和子包当然都包含一个__init__.py模块。我主要使用那些__init__.py模块为其中的包声明泛型类,它们仅用作各自包的抽象模板。我现在的问题是:这是使用__init__.py模块的“不错”/“正确”/“pythonic”方式吗?或者我宁愿在其他地方声明我的泛型类?举个例子,我们假设一个包mypkg:mypkg.__init__.py:classFoo(object):__some_attr=Nonedef__init__(self,some_attr):self._

以适当的单位返回函数值的 Pythonic 方法

目标:以调用者请求的单位(或任何微不足道的修改)从函数返回一个值。背景:我在RaspberryPi3上运行Python2.7,并使用函数distance()获取旋转编码器转动的距离。根据调用函数的位置,我需要不同单位的距离。那么,这应该如何以Python方式编写(即简短且易于维护)。第一次尝试:我的第一个尝试是在函数中使用单位米,并有一个很长的elif树来选择要返回的正确单位。defdistance(units='m'):my_distance=read_encoder()ifunits=='m':returnmy_distance*1.000elifunits=='km':retur

python - 替换特定集合元素的 pythonic 方法是什么?

我有一个python集合set([1,2,3])并且总是想用另一个值替换集合的第三个元素。可以像下面这样完成:defchange_last_elemnent(data):result=[]fori,jinenumerate(list(data)):ifi==2:j='C'result.append(j)returnset(result)但是有没有其他pythonic方法可以更聪明地做到这一点并使其更具可读性?提前致谢。 最佳答案 集合是无序的,因此“第三个”元素实际上没有任何意义。这将删除任意元素。如果这是你想做的,你可以简单地做:

使用大量参数编写函数/方法的 Pythonic 方式

想象一下:defmethod(self,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa):pass该行超过了79个字符,那么,多行的pythonic方式是什么? 最佳答案 您可以在圆括号(或方括号)内包含换行符,例如defmethod(self,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa):pass(要包含的空格数量当然取决于您)但在这种情况下,你也可以考虑defmethod(self,*args)

python - 使用 pure & pythonic 库将 Unicode/UTF-8 字符串转换为小写/大写

我使用GoogleAppEngine,不能使用任何C/C++扩展,只能使用纯pythonic库将Unicode/UTF-8字符串转换为小写/大写。str.lower()和string.lowercase()不会。 最佳答案 以UTF-8编码的str和unicode是两种不同的类型。不要使用string,在unicode对象上使用适当的方法:>>>printu'ĉ'.upper()Ĉ使用前将str解码为unicode:>>>print'ĉ'.decode('utf-8').upper()Ĉ

反转嵌套字典的 Pythonic 方式

我有一个包含人物和项目评级的嵌套字典,以人物为键。人们可能会或可能不会共享项目。示例:{'Bob':{'item1':3,'item2':8,'item3':6},'Jim':{'item1':6,'item4':7},'Amy':{'item1':6,'item2':5,'item3':9,'item4':2}}我正在寻找翻转这些关系的最简单方法,并有一个以项目为键的新嵌套字典。示例:{'item1':{'Bob':3,'Jim':6,'Amy':6},'item2':{'Bob':8,'Amy':5},'item3':{'Bob':6,'Amy':9},'item4':{'Jim'

从列表创建字典的 Pythonic 方法,其中键是在另一个列表中找到的元素,值是键之间的元素

考虑到我有两个列表,例如:l1=['a','c','b','e','f','d']l2=['x','q','we','da','po','a','el1','el2','el3','el4','b','some_other_el_1','some_other_el_2','c','another_element_1','another_element_2','d','','','another_element_3','d4']我需要创建一个字典,其中键是第二个列表中在第一个列表中找到的元素,值是在“键”之间找到的元素列表,例如:result={'a':['el1','el2','el3

查找与负正则表达式匹配的字符串中最后位置的 Pythonic 方法

在Python中,我尝试在任意字符串中找到与给定模式匹配的最后位置,指定为负字符集正则表达式模式。例如,对于字符串uiae1iuae200,not的模式是一个数字(Python中的正则表达式模式为[^0-9]),我需要'8'('200'之前的最后一个'e')作为结果。Whatisthemostpythonicwaytoachievethis?因为在Python文档中快速找到方法文档和最适合的方法有点棘手(因为方法文档位于相应页面中间的某个位置,例如re.search()在repage中),我很快发现自己最好的方法是使用re.search()-但当前的形式肯定是一种次优的方法:impor

使用 numpy 执行 elementwise "in"的 Pythonic 和有效方法

我正在寻找一种有效获取boolean值数组的方法,其中给定两个大小相等的数组a和b,如果对应的每个元素都为真a的元素出现在inb的相应元素中。例如下面的程序:a=numpy.array([1,2,3,4])b=numpy.array([[1,2,13],[2,8,9],[5,6],[7]])print(numpy.magic_function(a,b))应该打印[True,True,False,False]记住这个函数应该等同于[xinyforx,yinzip(a,b)]只有numpy-针对a和b很大的情况进行了优化,并且b的每个元素都是相当小。 最佳答案

arrays - 测试一行是否在数组中的 Pythonic 方法

这似乎是一个简单的问题,但我一直找不到好的答案。我正在寻找一种pythonic方法来测试2dnumpy数组是否包含给定行。例如:myarray=numpy.array([[0,1],[2,3],[4,5]])myrow1=numpy.array([2,3])myrow2=numpy.array([2,5])myrow3=numpy.array([0,3])myrow4=numpy.array([6,7])给定myarray,我想编写一个函数,如果我测试myrow1则返回True,如果我测试myrow2、myrow3和myrow4则返回False。我尝试了“in”关键字,但没有给我预期的