Questions tagged «python»

Python是一种多范式,动态类型的多用途编程语言。它旨在快速学习,理解和使用并强制使用干净统一的语法。请注意,Python 2自2020年1月1日起已不再受支持。不过,对于特定于版本的Python问题,请添加[python-2.7]或[python-3.x]标签。使用Python变体或库(例如Jython,PyPy,Pandas,Numpy)时,请将其包含在标签中。

3
Python:使用递归算法作为生成器
最近,我编写了一个函数来生成具有非平凡约束的某些序列。问题来自自然的递归解决方案。现在碰巧,即使对于相对较小的输入,序列也要成千上万,因此我宁愿使用我的算法作为生成器,而不是使用它来填充所有序列的列表。 这是一个例子。假设我们要使用递归函数计算字符串的所有排列。以下朴素算法采用一个额外的参数“存储”,并在找到一个参数时附加一个置换: def getPermutations(string, storage, prefix=""): if len(string) == 1: storage.append(prefix + string) # <----- else: for i in range(len(string)): getPermutations(string[:i]+string[i+1:], storage, prefix+string[i]) storage = [] getPermutations("abcd", storage) for permutation in storage: print permutation (请不要在意效率低下,这只是一个例子。) 现在,我想将函数转换为生成器,即产生置换而不是将其追加到存储列表中: def getPermutations(string, prefix=""): if len(string) == 1: yield prefix + string # <----- else: …


7
为什么Python使用“魔术方法”?
我最近一直在使用Python,而我发现有点奇怪的是,广泛使用了“魔术方法”,例如,使其长度可用,一个对象实现一个方法,def __len__(self)然后在你写len(obj)。 我只是想知道为什么对象不能简单地定义一个len(self)方法并直接将其作为对象的成员来调用,例如obj.len()?我敢肯定,Python这么做的确有充分的理由,但是作为一个新手,我还没有弄清楚它们到底是什么。

7
如何可靠地猜测MacRoman,CP1252,Latin1,UTF-8和ASCII之间的编码
在工作中,似乎没有一周没有编码相关的混乱,灾难或灾难。问题通常来自程序员,他们认为他们无需指定编码就可以可靠地处理“文本”文件。但是你不能。 因此,已决定从此以后禁止文件以*.txt或结尾的文件名*.text。这种想法是,这些扩展误导了随意的程序员对编码的沉闷自满,这会导致处理不当。根本没有扩展将是更好的选择,因为至少您知道自己不知道拥有什么。 但是,我们不会走那么远。相反,您将期望使用以编码结尾的文件名。因此,对于文本文件,例如,这些会是这样README.ascii,README.latin1,README.utf8,等。 对于需要特定扩展名的文件,如果可以在文件本身内部指定编码,例如在Perl或Python中,则应这样做。对于Java源之类的文件,其中文件内部没有这样的功能,您可以将编码放在扩展名之前,例如SomeClass-utf8.java。 对于输出,强烈建议使用 UTF-8 。 但是作为输入,我们需要弄清楚如何处理代码库中名为的数千个文件*.txt。我们想重命名所有这些以适应我们的新标准。但是我们不可能全神贯注。因此,我们需要一个实际起作用的库或程序。 这些格式有ASCII,ISO-8859-1,UTF-8,Microsoft CP1252或Apple MacRoman。尽管我们知道我们可以判断某些东西是否为ASCII,并且知道有某种东西可能是UTF-8还是一个不错的选择,但我们对8位编码感到困惑。因为我们在大多数台式机为Mac的混合Unix环境(Solaris,Linux,Darwin)中运行,所以我们有很多烦人的MacRoman文件。这些尤其是一个问题。 一段时间以来,我一直在寻找一种以编程方式确定 ASCII码 ISO-8859-1 CP1252 麦克罗曼 UTF-8 文件在其中,我还没有找到可以可靠地区分这三种不同的8位编码的程序或库。我们可能仅拥有一千多个MacRoman文件,因此我们使用的任何字符集检测器都必须能够将它们嗅出。我看过的东西都无法解决这个问题。我对ICU字符集检测器库寄予厚望,但它不能处理MacRoman。我也研究过模块,它们在Perl和Python中都可以做同样的事情,但是一遍又一遍地是同一回事:不支持检测MacRoman。 因此,我要寻找的是一个现有的库或程序,该库或程序可以可靠地确定文件所用的五种编码中的哪一种(最好是更多)。特别是它必须区分我引用的三种3位编码,尤其是MacRoman。文件是超过99%的英语文本;还有其他几种语言,但不是很多。 如果是库代码,则我们的语言偏好是按Perl,C,Java或Python的顺序排列。如果它只是一个程序,那么我们并不在乎它的语言是什么,只要它是完整的源代码,在Unix上运行并且完全不受限制即可。 还有其他人遇到过随机编码成千上万个旧文本文件的问题吗?如果是这样,您是如何尝试解决它的?您的成功程度如何?这是我的问题中最重要的方面,但是我也很感兴趣您是否鼓励程序员使用文件中的实际编码来命名(或重命名)他们的文件,这将有助于我们将来避免此问题。有没有人曾经尝试过在制度基础上强制执行,如果成功,那么成功与否,为什么? 是的,我完全理解,考虑到问题的性质,为什么不能保证给出确切的答案。对于小文件,尤其是这种情况,因为您没有足够的数据继续运行。幸运的是,我们的文件很少。除了随机README文件外,大多数文件的大小在50k到250k之间,许多文件更大。大小超过K的任何内容都将保证使用英语。 问题领域是生物医学文本挖掘,因此我们有时会处理大量的超大型语料库,例如PubMedCentral的所有Open Access存储库。一个相当大的文件是BioThesaurus 6.0,容量为5.7 GB。该文件特别令人讨厌,因为它几乎都是UTF-8。但是,我相信有些numbskull会以一些8位编码插入其中的几行,即Microsoft CP1252。您需要花费相当长的时间才能踏上那个旅程。:(

2
我应该如何组织Python源代码?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 改善这个问题 我正在开始使用Python(现在是时候尝试了),并且我正在寻找一些最佳实践。 我的第一个项目是一个在多个线程中运行命令行实验的队列。我开始得到一个很长的main.py文件,我想将其分解。总的来说,我在寻找:python程序员如何组织多个源文件?有没有适合您的特定结构? 我的具体问题包括: 每个类都应该放在单独的文件中吗? 我应该如何组织相对于源代码的单元测试? 我应该在哪里放置doc注释,尤其是命令行操作的注释? 如果使用多个目录,如何在它们之间导入类? 我可能会通过反复试验得出一些自己的结论,但是我宁愿从好的东西开始。




13
id()函数的作用是什么?
我阅读了Python 2文档,并注意到了该id()功能: 返回对象的“身份”。这是一个整数(或长整数),在此对象的生存期内,此整数保证是唯一且恒定的。具有不重叠生存期的两个对象可能具有相同的id()值。 CPython实现细节:这是对象在内存中的地址。 因此,我通过使用id()列表进行了实验: >>> list = [1,2,3] >>> id(list[0]) 31186196 >>> id(list[1]) 31907092 // increased by 896 >>> id(list[2]) 31907080 // decreased by 12 函数返回的整数是多少?它与C中的内存地址同义吗?如果是这样,为什么整数不对应于数据类型的大小? id()在实践中何时使用?
99 python 

6
Python中的循环列表迭代器
我需要遍历一个循环列表,每次从最后一次访问的项目开始,可能要多次。 用例是一个连接池。客户端请求连接,迭代器检查指向的连接是否可用并返回,否则循环直到找到可用的连接。 有没有一种精巧的方法可以在Python中做到这一点?
99 python  list  iterator 

6
使用Python检测和录制音频
我需要将音频片段捕获为WAV文件,然后可以将其传递给另一位python进行处理。问题是我需要确定何时有音频存在,然后记录下来,在静音时停止,然后将该文件传递给处理模块。 我认为wave模块应该可以检测到何时存在纯静音,并在检测到非静音时立即将其丢弃,然后在线路变为静音时再次停止录制。 只是不能完全理解我的想法,没有人可以让我开始做一个基本的例子。

12
像sum这样的Python元素元组操作
无论如何,有没有让Python中的元组操作像这样工作: >>> a = (1,2,3) >>> b = (3,2,1) >>> a + b (4,4,4) 代替: >>> a = (1,2,3) >>> b = (3,2,1) >>> a + b (1,2,3,3,2,1) 我知道它是这样工作的,因为__add__和__mul__方法被定义为那样工作。因此,唯一的方法是重新定义它们?
99 python  tuples 

13
如何在Python中美化JSON?
有人可以建议我如何使用Python或通过命令行美化JSON吗? 唯一可以做到的基于在线的JSON美化器是:http : //jsonviewer.stack.hu/。 但是,我需要在Python中使用它。 这是我的数据集: { "head": {"vars": [ "address" , "description" ,"listprice" ]} , "results": { "bindings": [ { "address" : { "type":"string", "value" : " Dyne Road, London NW6"}, "description" :{ "type":"string", "value" : "6 bed semi detached house"}, "listprice" : { "type":"string", "value" : "1,150,000"} } …



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.