草庐IT

Pythonic

全部标签

python - 以 Pythonic 的方式获取列表的尾部?

fromrandomimportrandrangedata=[(randrange(8),randrange(8))forxinrange(8)]而且我们必须测试第一项是否等于尾部中的一个。我很好奇,我们如何在不将尾部项目复制到新列表的情况下以最简单的方式做到这一点?请考虑到这段代码在update()方法中执行了很多次,因此它必须尽可能快。使用额外的列表(我猜是不必要的内存浪费):head=data[0]result=headindata[1:]好的,这是另一种方式(太冗长):i=1whilei解决这个问题的最Pythonic方法是什么?谢谢。 最佳答案

用于附加任意类对象列表属性的 Pythonic 语法

是否有setattr()的类似物允许附加实例化类对象的任意列表属性?如果没有,是否有推荐的方法?这是我目前正在做的事情的简单版本:foo=SomeClass()...attr="names"value="Eric"values=getattr(foo,attr)values.append(value)setattr(foo,attr,values)这看起来笨拙且效率低下。编辑:这假定foo.names(或任何可能分配给attr变量的任意值)实际上是一个列表。 最佳答案 setattr调用是多余的,iffoo.names确实是一个列表

python - 在重度嵌套的 defaultdict 中使用更 Pythonic 的方式来计算事物

我的代码目前必须将大量嵌套的dict中的内容计数到另一个中。我有需要按3个值索引然后计数的项目。因此,在我的循环之前,我像这样初始化一个嵌套的defaultdict:fromcollectionsimportdefaultdicttype_to_count_dic=defaultdict(lambda:defaultdict(lambda:defaultdict(int)))这让我可以像这样在一个紧密的循环中计算项目:forain...:forbin...:forcin...:type_to_count_dic[a][b][c]+=1我觉得初始化所有这些defaultdict感觉很像在

python - 日期范围 : is there a more pythonic way? 中的所有星期二和星期三

我想找到2015-11-02和2015-12-14之间的所有星期二和星期三(作为datetime对象)。这有效:fromdatetimeimportdatetime,timedeltal=[]foriinrange(100):d=datetime(2015,11,2)+timedelta(days=i)ifd>datetime(2015,12,14):breakifd.weekday()==1ord.weekday()==2:#tuesdayorwednesdayl.append(d)printl[datetime.datetime(2015,11,3,0,0),datetime.da

python - 打印换行符的最 Pythonic 方式

如果我需要打印单个换行符,编写print()语句的最Pythonic方式是什么?我正在教别人Python,我想把它做好。我发现最有可能的两种方式是:1)print("")优点:更短、更简单缺点:由于未提及\n可能会降低可读性依赖于end是一个换行符,这可能不是很明显2)print("\n",end="")优点:声明的目的很明显缺点:更长。初学者可能不知道“结束”参数是什么意思。 最佳答案 都没有。通常的方法是:print() 关于python-打印换行符的最Pythonic方式,我们在S

将字符串中的所有八进制值评估为整数的 Pythonic 方法

所以我得到了一个看起来像"012+2-01+24"的字符串。我希望能够快速(更少的代码)评估该表达式...我可以在字符串上使用eval(),但我不希望012以八进制形式(10)表示,我希望它表示为int(12)。我的解决方案有效,但并不优雅。我假设有一种非常好的pythonic方法可以做到这一点。我的解决方案:#expressionissomestringthatlookslike"012+2-01+24"atomlist=[]foratominexpression.split():if"+"notinatomand"-"notinatom:atomlist.append(int(at

database - Django模型/SQLAlchemy肿!有没有真正的Pythonic数据库模型?

“使事情尽可能简单,但不要简单。”我们能否找到解决Python数据库世界的解决方案?更新:A'lustdb'prototypehasbeenwrittenbyAlexMartelli-如果您知道任何轻量级的,具有多个后端的高级数据库库,我们可以包装语法糖蜜,请权衡一下!fromsomeAmazingDBimport*#weimportedasmartmodelclassanddbobjectwhichtalktodatabaseadapter/sclassTask(model):title=''done=False#nativetypesnotacustomobjectwehaveto

python - 在设计 Python API 时,抛出异常或返回 false/None 等是否更 Pythonic?

我正在使用基于Python的API,其中有很多函数可以查询事物,例如doesPointExist、findPoint、canCreateNewPoint等,其中否定结果抛出异常。这使得代码更加困惑,充满了try/catch语句,而不是直接将结果用作bool值。由于我不是Python专家,我想知道这个设计是不是Pythonic?不过,我还没有在标准库中看到这种设计,所以我假设在PythonAPI中使用这种异常是不受欢迎的? 最佳答案 API设计是一门艺术。函数的名称应该表明它的行为方式,包括设置用户期望。名为findPoint的函数意

python - 这个列表理解 pythonic 够吗?

这个问题在这里已经有了答案:Convertingaloopwithanassignmentintoacomprehension[duplicate](2个答案)关闭7年前。假设我想使用Python创建一个ints列表,其中包含数字1到10的立方体仅如果立方体可以被四整除。我写了这条工作线:cube4=[x**3forxinrange(1,11)if(x**3)%4==0]我对这行代码的不满在于它计算了两次x的立方。是否有更多pythonic方式来编写这一行?或者这是否与列表理解一样好?编辑-我的问题旨在关注如何使用Python的特性和细微差别避免无关的计算,同时仍然保持代码简洁和可读。

class - 仅在第一次调用变量时才起作用的 Pythonic 方式

我的Python类有一些变量需要在第一次调用时进行计算。后续调用应该只返回预先计算的值。我不想浪费时间做这项工作,除非用户确实需要它们。那么是否有一种干净的Pythonic方式来实现这个用例?我最初的想法是第一次使用property()调用函数,然后覆盖变量:classmyclass(object):defget_age(self):self.age=21#raiseanAttributeErrorherereturnself.ageage=property(get_age)谢谢 最佳答案 classmyclass(object):