Python模块函数以意外方式使用

Python模块函数以意外方式使用

Python module functions used in unexpected ways

基于使用shlex.split巧妙地将带引号的字符串分割成字符串的"在Python中用空格分割字符串",我很想了解其他由非显而易见的标准库函数解决的常见任务。

如果这成为本周的模块,那也很好。


得知您可以使用bisect模块在序列中进行非常快速的二进制搜索,我感到非常惊讶。它的文档没有说什么:

This module provides support for maintaining a list in sorted order without having to sort the list after each insertion.

用法很简单:

1
2
3
4
>>> import bisect
>>> lst = [4, 7, 10, 23, 25, 100, 103, 201, 333]
>>> bisect.bisect_left(lst, 23)
3

但是,您必须记住,线性排序列表中的某些内容比逐项排序然后对它进行二进制搜索要快。第一个选项是O(n),第二个选项是O(nlogn)。


我使用itertools(尤其是循环,重复,链接)来使python的行为更像R和其他功能/矢量应用程序。通常,这使我避免了Numpy的开销和复杂性。

1
2
3
4
# in R, shorter iterables are automatically cycled
# and all functions"apply" in a"map"-like way over lists
> 0:10 + 0:2
 [1]  0  2  4  3  5  7  6  8 10  9 11

Python
#普通python
在[1]中:范围(10)+范围(3)
Out [1]:[0、1、2、3、4、5、6、7、8、9、0、1、2]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
## this code is terrible, but it demos the idea.
from itertools import cycle
def addR(L1,L2):
    n = max( len(L1), len(L2))
    out = [None,]*n
    gen1,gen2 = cycle(L1), cycle(L2)
    ii = 0
    while ii < n:
        out[ii] = gen1.next() + gen2.next()
        ii += 1
    return out

In [21]: addR(range(10), range(3))
Out[21]: [0, 2, 4, 3, 5, 7, 6, 8, 10, 9]

通常忽略了模块,用法和窍门:

collections.defaultdict():当您想让字典中的键丢失时使用默认值。

functools.wraps():用于编写可以很好地与内省一起使用的装饰器。

posixpath:POSIX系统的os.path模块。即使在Windows和其他非POSIX系统上,也可以使用它来处理POSIX路径(包括URI元素)。

ntpath:Windows的os.path模块;可用于在非Windows系统上操纵Windows路径。

(另请参阅:macpath,对于MacOS 9和更早版本,对于OS / 2 EMX,为os2emxpath,但是我不确定是否有人在乎。)

pprint:对容器的repr()进行更结构化的打印可以使调试更加容易。

imp:编写自己的插件系统或从任意档案库制作Python导入模块所需的所有工具。

rlcompleter:在普通的交互式解释器中获取制表符完成。只需执行"导入readline,rlcompleter; readline.parse_and_bind('tab:complete')"

PYTHONSTARTUP环境变量:可以设置为进入交互式解释器时将要执行的文件的路径(在主命名空间中);像上面的rlcompleter配方一样有用。


getpass对于确定当前用户的登录名很有用。

grp允许您按名称查找Unix组ID,反之亦然。

在重复轮询目录内容的情况下,dircache可能会很有用。

glob可以像Unix shell一样找到与通配符匹配的文件名。

当需要复制,删除或重命名文件时,shutil非常有用。

csv可以简化定界文本文件的解析。

optparse提供了一种可靠的方法来解析命令行选项。

当您需要处理bzip2压缩文件时,bz2会派上用场。

urlparse可以避免将URL分解为组成部分的麻烦。


我了解到struct.unpack是解压缩二进制数据格式的天赐之物!


复数。 (complexobject.c定义了一个类,因此从技术上讲它不是模块)。 非常适合2D坐标,具有轻松的平移/旋转等

例如。

1
2
3
4
5
TURN_LEFT_90= 1j
TURN_RIGHT_90= -1j

coord= 5+4j # x=5 y=4
print coord*TURN_LEFT_90

泡菜模块非常棒


我逐渐欣赏的一个功能是string.translate。它的执行速度非常快,在您想要更改或删除字符串中的字符的任何地方都非常有用。我只是在一个看似不适用的问题中使用了它,发现它轻而易举地击败了所有其他解决方案。

缺点是它的API有点笨拙,但这在Py2.6 / Py3.0中有所改善。


其他大多数示例仅被忽略,而不是模块的意外使用。

像shlex一样,fnmatch可以以意外的方式应用。 fnmatch是穷人的RE,可以用于匹配多个文件,它可以将字符串与简化的通配符模式进行比较。


我发现sched模块对类似cron的活动很有帮助。它大大简化了事情。不幸的是我发现为时已晚。


推荐阅读

    excel怎么用乘法函数

    excel怎么用乘法函数,乘法,函数,哪个,excel乘法函数怎么用?1、首先用鼠标选中要计算的单元格。2、然后选中单元格后点击左上方工具栏的fx公

    excel中乘法函数是什么?

    excel中乘法函数是什么?,乘法,函数,什么,打开表格,在C1单元格中输入“=A1*B1”乘法公式。以此类推到多个单元。1、A1*B1=C1的Excel乘法公式

    标准差excel用什么函数?

    标准差excel用什么函数?,函数,标准,什么,在数据单元格的下方输入l标准差公式函数公式“=STDEVPA(C2:C6)”。按下回车,求出标准公差值。详细

    字符库快捷键|字符串快捷键

    字符库快捷键|字符串快捷键,,1. 字符串快捷键1、单行注释单行注释是 #Mac的快捷键是 command+/windows的快捷键是 Ctrl + /2、多行注

    excel常用函数都有哪些?

    excel常用函数都有哪些?,函数,哪些,常用,1、SUM函数:SUM函数的作用是求和。函数公式为=sum()例如:统计一个单元格区域:=sum(A1:A10)  统计多个

    atsl电脑板故障|atsl车身控制模块故障

    atsl电脑板故障|atsl车身控制模块故障,atsl电脑板故障,1、2机械故障通过维修更换内部机械零件,可以解决机械故障。2、电路的故障有保险丝烧

    金蝶eas固定资产模块

    金蝶eas固定资产模块,,1.金蝶EAS8O版本中固定资产模块中变更如何操作路径:固定资产管理-固定资产管理-业务处理-固定资产变更步骤:1、在变更