小编mit*_*llc的帖子

Python字符串'in'运算符实现算法和时间复杂度

我正在考虑in运营商如何实施

>>> s1 = 'abcdef'
>>> s2 = 'bcd'
>>> s2 in s1
True
Run Code Online (Sandbox Code Playgroud)

在CPython中,哪个算法用于实现字符串匹配,以及时间复杂度是多少?有关于此的官方文件或维基吗?

python string algorithm cpython

26
推荐指数
1
解决办法
7472
查看次数

传递大数据作为函数参数时python的性能

假设我有两个Python函数,函数1函数2.

函数1将调用函数2,并且参数是大数据(例如,具有10万个元素的字典).

我想知道在函数1中调用函数2之间是否存在任何性能差异,这意味着我需要传递大数据参数,并直接在函数1中实现函数2,这意味着我不需要传递大数据参数.

谢谢.

PS:我认为关键问题是Python如何通过参数,值或参考(指针)传递参数?

编辑:这似乎是一个混乱的问题.如何通过引用传递变量?是一个很好的答案.

python performance

14
推荐指数
2
解决办法
6550
查看次数

记忆算法时间复杂度

我读了这篇文章,退出了一个很好的面试问题,作者想出了一个work break问题并提出了三个解决方案.高效使用一个memoization算法和笔者表示,其最坏情况下的时间复杂度是O(n^2)因为the key insight is that SegmentString is only called on suffixes of the original input string, and that there are only O(n) suffixes.

但是,我发现很难理解它为什么O(n^2).有人可以给我一个提示或证据吗?

Work Break Problem: 
    Given an input string and a dictionary of words,
    segment the input string into a space-separated
    sequence of dictionary words if possible. For
    example, if the input string is "applepie" and
    dictionary contains a standard set of English words,
    then …
Run Code Online (Sandbox Code Playgroud)

algorithm recursion memoization time-complexity

13
推荐指数
1
解决办法
4622
查看次数

Python3 max函数使用defaultdict中的值作为键不起作用

假设model是a defaultdict,而且num是aset

>>> model
>>> defaultdict(<function <lambda> at 0x11076f758>, {1: 3, 2: 2, 4: 1})
>>> num
>>> {1, 2, 3, 4, 5, 6}
Run Code Online (Sandbox Code Playgroud)

我想从中得到num最大值的项目model,以下代码可以正常工作Python2

>>> # python 2.7.6
>>> max(num, key=model.get)
>>> 1
Run Code Online (Sandbox Code Playgroud)

但它不起作用Python3,

>>> # python 3.3.3
>>> max(num, key=model.get)
>>> TypeError: unorderable types: NoneType() > int()
Run Code Online (Sandbox Code Playgroud)

我可以使用max(num, key=lambda k:model[k])它来工作Python3,但如果项目中num没有model,它将被添加.这将修改model.

我想知道为什么model.get不能工作Python3,我怎么能不修改 …

python-2.7 python-3.x

5
推荐指数
1
解决办法
702
查看次数

如何运行“corepack enable”来安装 Yarn berry?

对于现代版本的 Yarn(又名 Yarn Berry),首选安装是通过 Corepack,并且 Corepack 默认包含在 Node.js 安装中(>=16.10)。请参阅https://yarnpkg.com/getting-started/install

corepack enable这就是我在 中尝试做的事情default.nix,但它不起作用。

with import <nixpkgs> {};

stdenv.mkDerivation {
  name = "dev";
  dontUnpack = true;
  buildInputs = [ nodejs-17_x ];
  postPhases = ''
    corepack enable
  '';
}
Run Code Online (Sandbox Code Playgroud)

nix nix-shell

4
推荐指数
1
解决办法
3880
查看次数

'setuptools'模块不包含在python 3.4中?

我试图导入setuptoolsPython3.4如下图所示:

>>> from setuptools import setup
Run Code Online (Sandbox Code Playgroud)

但我得到了ImportError: No module named 'setuptools'.

我目前的版本Python3.4Python 3.4.0b1 (default, Nov 29 2013, 16:37:17),它是使用安装的MacPorts.

所以setuptoolsPython 3.4标准库中没有包含模块,对吧?我需要通过安装setuptools模块pip

更新:

setuptools不在标准库中.但我无法安装它,pip因为pip需要setuptools先安装.MacPorts包含py34-setuptools @2.0.2端口,我可以setuptools通过它安装.

python python-3.4

3
推荐指数
1
解决办法
4608
查看次数

Python 3和Python 2之间的type()和hasattr()的区别

当我试图检查的类型class声明中Python 3Python 2,我得到了奇怪的结果,如以下显示,

>>> #python 2.7.6
>>> class MyClass:
...     pass
... 
>>> type(MyClass)
<type 'classobj'>
>>> hasattr(MyClass, '__call__')
False
Run Code Online (Sandbox Code Playgroud)

typeMyClassPython 2classobjMyClass没有__call__属性.这就是我的期望.

>>> #python 3.3.3
>>> class MyClass:
...     pass
... 
>>> type(MyClass)
<class 'type'>
>>> hasattr(MyClass, '__call__')
True
Run Code Online (Sandbox Code Playgroud)

然而,在Python 3,在typeMyClass就是class 'type',和MyClass具有__call__属性,虽然我没有在声明它MyClass.

我想原因是,在Python 3,MyClass是 …

python python-2.7 python-3.x

3
推荐指数
1
解决办法
788
查看次数

Python:用O(logN)中的给定值计算字典中的项目数

我想用给定的值计算字典中的项目数(假设字典中的值只是数字),我在网上搜索并找到两种方法,第一种方法:

sum(x == chosen_value for x in d.values())
Run Code Online (Sandbox Code Playgroud)

第二种方法是使用Counter in Collections模块.

但是,我认为这两种方法的运行时间是O(N),N字典中的项目总数在哪里.我想找到一种方法来做到这一点O(logN),有可能吗?

在此先感谢任何帮助和建议!

更新:

感谢您的快速回复!它无法完成O(logN).我可以使用二叉树来存储(键,值)对.

python algorithm

0
推荐指数
1
解决办法
249
查看次数