草庐IT

Pythonic

全部标签

python - 在编译时提供函数元数据的大多数 Pythonic 方式?

我正在以Python2.7模块的形式构建一个非常基础的平台。该模块有一个读取-评估-打印循环,其中输入的用户命令被映射到函数调用。因为我试图让为我的平台构建插件模块变得容易,所以函数调用将从我的主模块到任意插件模块。我希望插件构建器能够指定他想要触发其功能的命令,所以我一直在寻找一种Pythonic方式来远程输入映射到主模块中的命令->函数字典中插件模块。我看过几件事:方法名解析:主模块导入插件模块并扫描它以查找与特定格式匹配的方法名称。为了例如,它可以将download_file_command(file)方法添加到它的字典为“下载文件”->download_file_command

list - 填充包含日期类型数据的列表的最佳 pythonic 方法?

我有以下列表数据。data=[['2009-01-20',3000.0],['2011-03-01',6000.0],['2008-12-15',6000.0],['2002-02-15',6000.0],['2009-04-20',6000.0],['2010-08-01',4170.0],['2002-07-15',6000.0],['2008-08-15',6000.0],['2010-12-01',6000.0],['2011-02-01',8107.0],['2011-04-01',8400.0],['2011-05-15',9000.0],['2010-05-01',696

algorithm - 将字典列表转换为命名元组列表的 Pythonic 方法

我有一个list的dict。需要将其转换为namedtuple(首选)或简单tuple的list,同时用空格拆分第一个变量。什么是更pythonic的方式来做到这一点?我稍微简化了我的代码。欢迎使用理解、gen表达式和itertools。数据输入:dl=[{'a':'123','d':'*','n':'first'},{'a':'45','d':'*','n':'second'},{'a':'6','d':'*','n':'third'},{'a':'78910','d':'*','n':'forth'}]简单算法:fromcollectionsimportnamedtuplesome

定义多个正则表达式以在多次迭代中使用的 Pythonic 和高效方法

我目前正在编写一个Python脚本来处理大约10,000个输入文档。根据脚本的进度输出,我注意到前400多个文档的处理速度非常快,然后脚本速度变慢,尽管所有输入文档的大小都大致相同。我假设这可能与这样一个事实有关,即大部分文档处理都是使用正则表达式完成的,一旦它们被编译,我就不会将它们保存为正则表达式对象。相反,我会在需要时重新编译正则表达式。因为我的脚本有大约10个不同的函数,所有函数都使用大约10-20个不同的正则表达式模式,我想知道在Python中有什么更有效的方法来避免一遍又一遍地重新编译正则表达式模式(在Perl中我可以简单地包含一个修饰符//o)。我的假设是,如果我使用将正

python - 函数根据其输入返回可迭代或不可迭代是 Pythonic 吗?

(阅读Alex的回答更新标题和内容)总的来说,我认为函数根据其参数有时返回可迭代对象有时返回单个项目被认为是错误的形式(非Pythonic)。例如struct.unpack总是返回一个元组,即使它只包含一个项目。我正在尝试完成一个模块的API,我有一些函数可以采用一个或多个参数(通过*args),如下所示:a=s.read(10)#reads10bitsandreturnsasingleitemb,c=s.read(5,5)#reads5bitstwiceandreturnsalistoftwoitems.所以如果只有一个参数,它返回一个项目,否则它返回一个列表。现在我认为这很好,一点

从字符串前面去除所有 0 的 Pythonic 方法

我有一个字符串,稍后将使用int()进行转换。它是三位数字,从0到3的任何地方都可能是0。我如何去除字符串左侧的0?现在我正在使用string.lstrip('0')但它会去除所有0并使字符串为空,从而导致错误。 最佳答案 你可以这样做:s=str(int(s))另一种选择是:s=s.lstrip('0')or'0' 关于从字符串前面去除所有0的Pythonic方法,我们在StackOverflow上找到一个类似的问题: https://stackoverfl

python - 是pythonic : naming lambdas

我开始欣赏python中lambda表达式的值(value),尤其是在涉及函数式编程时,map,functionsreturningfunctions等。但是,我也一直在函数中命名lambda,因为:我多次需要相同的功能并且不想重复代码。功能特定于它出现的功能;别处不需要它。当我遇到满足上述条件的情况时,我一直在编写一个命名的lambda表达式,以便DRY和缩小功能范围。例如,我正在编写一个对某些numpy数组进行操作的函数,我需要对传递给该函数的所有数组进行一些适度繁琐的索引(这很容易放在一行中)。我编写了一个命名的lambda表达式来进行索引,而不是编写整个其他函数或在整个函数定义

gzip - 临时解压缩文件的最佳(最 "pythonic")方法

我需要临时创建一些文件的解压版本。我见过有人在bash中执行zcatsomefile.gz>/tmp/somefile,所以我在python中创建了这个简单的函数:fromsubprocessimportcheck_calldefunzipto(zipfile,tmpfile):withopen(tmpfile,'wb')astf:check_call(['zcat',zipfile],stdout=tf)但是使用zcat和check_call对我来说似乎很老套,我想知道是否有更多的“pythonic”方式来做到这一点。谢谢你的帮助 最佳答案

以换行符以外的方式遍历文件的 Pythonic 方法

要按行迭代文件,可以这样做-forlineinf:(其中f是文件迭代器)。我想通过逗号分隔的block而不是换行符分隔的block来迭代文件。我可以读取所有行,然后用逗号分隔字符串,但是执行此操作的pythonic方法是什么? 最佳答案 边走边迭代拆分,这样就不需要存储所有行了:forlineinf:forlinesinline.split(","): 关于以换行符以外的方式遍历文件的Pythonic方法,我们在StackOverflow上找到一个类似的问题:

python - 什么是更 pythonic - 函数组合、lambda 或其他东西?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。给定下面的例子,哪个更pythonic?使用函数组合、lambda或(现在)完全不同的东西?我不得不说lambda似乎更具可读性,但Guido本人似乎想完全删除lambda-http://www.artima.com/weblogs/viewpost.jsp?thread=98196fromfunctoolsimportpartialfromoperat