标签: cmp

为什么在Python3.0中从排序/排序中删除了cmp参数?

来自python wiki: In Py3.0, the cmp parameter was removed entirely (as part of a larger effort to simplify and unify the language, eliminating the conflict between rich comparisons and the __cmp__ methods).

我不明白为什么在py3.0中删除cmp的原因

考虑这个例子:

>>> def numeric_compare(x, y):
        return x - y
>>> sorted([5, 2, 4, 1, 3], cmp=numeric_compare)
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

现在考虑这个版本(推荐并与3.0兼容):

def cmp_to_key(mycmp):
    'Convert a cmp= function into a key= function'
    class K(object):
        def __init__(self, obj, *args):
            self.obj = obj
        def __lt__(self, other):
            return …
Run Code Online (Sandbox Code Playgroud)

python sorting object cmp

36
推荐指数
2
解决办法
1万
查看次数

Python的cmp_to_key函数如何工作?

我在这里遇到了这个功能.

我对这将如何实现感到困惑 - 如何key通过cmp_to_key知道给定元素的"位置"而不检查给定元素与其他感兴趣元素的比较来生成函数?

python sorting algorithm cmp python-internals

34
推荐指数
1
解决办法
4313
查看次数

JNZ和CMP装配说明

如果我错了,请纠正我.

这是我对JNZ和的理解CMP.

JNZ- 如果Z标志不为零,将发生跳转(1)

CMP- 如果两个值相等,Z则设置标志(1),否则不设置(0)

Olly DBG

这是我正在观看的flash教程.它正在教一个简单的CrackMe解决方案.

如您所见,前面的指令AL与之比较47h.他们是平等的,设置了Z旗帜.(你可以在右侧的Registers窗口中看到它)

下一条指令是a JNZ.我的理解是,如果Z设置了标志,将发生跳转.该Z标志设置,但跳就不会发生!

为什么?

x86 assembly reverse-engineering cmp ollydbg

22
推荐指数
2
解决办法
11万
查看次数

Python:'列表中的对象'检查和'__cmp__'溢出

这是我第一次出现堆栈溢出,所以如果格式不适合该网站,我很抱歉.我刚刚开始学习编程,差不多已经过去了2周.我正在从http://openbookproject.net/thinkcs/python/english3e/index.html学习python, 直到现在一切都很好,我刚刚被困了好几个小时.我google了很多但找不到合适的解决方案来解决我的问题所以我在这里.

正如CH17所解释的那样,我试图让OldMaidGame()运行没有问题.http://openbookproject.net/thinkcs/python/english3e/ch17.html - 大部分代码也来自前一章.

我发现的是我无法使用Deck.remove,Hand.remove_matches或任何其他类型的删除功能.经过一些调试后,我发现当程序检查卡片/手/等中是否存在给定卡片时会出现问题.它不可能匹配.然后经过一些回顾章节,(在第16章),我发现'如果卡在甲板/手/等:删除(卡)'等查找.cmp()的对象,以确定卡实际上是否存在于deck/hand/etc中.这是我在电子书给定代码上添加'ace'之后的cmp版本.

def __cmp__(self, other):
    """ Compares cards, returns 1 if greater, -1 if lesser, 0 if equal """
    # check the suits
    if self.suit > other.suit: return 1
    if self.suit < other.suit: return -1
    # suits are the same... check ranks
    # check for aces first.
    if self.rank == 1 and other.rank == 1: return 0
    if self.rank == 1 and other.rank != 1: return 1
    if self.rank …
Run Code Online (Sandbox Code Playgroud)

python list object cmp playing-cards

16
推荐指数
1
解决办法
1601
查看次数

x86 CMP指令差异

以下两个x86指令之间的(非平凡)差异是什么?

39 /r    CMP r/m32,r32   Compare r32 with r/m32
3B /r    CMP r32,r/m32   Compare r/m32 with r32
Run Code Online (Sandbox Code Playgroud)

背景

我正在构建一个Java汇编程序,我的编译器的中间语言将使用它来生成Windows-32可执行文件.

目前我有以下代码:

final ModelBase mb = new ModelBase(); // create new memory model
mb.addCode(new Compare(Register.ECX, Register.EAX)); // add code
mb.addCode(new Compare(Register.EAX, Register.ECX)); // add code

final FileOutputStream fos = new FileOutputStream(new File("test.exe"));
mb.writeToFile(fos);
fos.close();
Run Code Online (Sandbox Code Playgroud)

输出有效的可执行文件,其中包含TEXT部分中的两条CMP指令.输出到"text.exe"的可执行文件不会有任何意义,但这不是重点.该类CompareCMP指令的包装器.

上面的代码生成(使用OllyDbg检查):

Address   Hex dump                 Command
0040101F  |.  3BC8                 CMP ECX,EAX
00401021  |.  3BC1                 CMP EAX,ECX
Run Code Online (Sandbox Code Playgroud)

差别很小:如果我使用39字节操作码:

Address   Hex dump                 Command …
Run Code Online (Sandbox Code Playgroud)

x86 assembly instruction-set cmp

13
推荐指数
2
解决办法
6948
查看次数

在Unix中比较两个文本文件的比较函数

我想知道是否有人可以告诉我unix中是否有可用的功能,bash比较文件的所有行.如果它们不同,则应输出true/false或-1,0,1.我知道这些cmp函数存在于其他语言中.我一直在寻找手册页,但都没有成功.如果没有,有人可以帮我提出替代解决方案吗?

谢谢

unix bash cmp

13
推荐指数
3
解决办法
4万
查看次数

致命错误 C1083:无法打开包含文件:“basetsd.h”

所以最近几天我一直在尝试安装 Scrapy for Python。尝试任何我能想到的事情并阅读我遇到的类似问题的所有内容,但一直无法找到解决方案。这是代码。

谢谢。

building 'twisted.test.raiser' extension
    creating build\temp.win32-3.6
    creating build\temp.win32-3.6\Release
    creating build\temp.win32-3.6\Release\src
    creating build\temp.win32-3.6\Release\src\twisted
    creating build\temp.win32-3.6\Release\src\twisted\test
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DWIN32=1 "-Ic:\users\karl holst\appdata\local\programs\python\python36-32\include" "-Ic:\users\karl holst\appdata\local\programs\python\python36-32\include" "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.15063.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.15063.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.15063.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.15063.0\winrt" /Tcsrc/twisted/test/raiser.c /Fobuild\temp.win32-3.6\Release\src/twisted/test/raiser.obj
    raiser.c
    c:\users\karl holst\appdata\local\programs\python\python36-32\include\pyconfig.h(222): fatal error C1083: Cannot open include file: 'basetsd.h': No such file or directory …
Run Code Online (Sandbox Code Playgroud)

python pip cmp scrapy

7
推荐指数
2
解决办法
3万
查看次数

__cmp__方法在Python 2.x中没有按预期工作?

class x:
    def __init__(self,name):
        self.name=name

    def __str__(self):
        return self.name

    def __cmp__(self,other):
        print("cmp method called with self="+str(self)+",other="+str(other))
        return self.name==other.name
       # return False


instance1=x("hello")
instance2=x("there")

print(instance1==instance2)
print(instance1.name==instance2.name)
Run Code Online (Sandbox Code Playgroud)

这里的输出是:

cmp method called with self=hello,other=there
True
False
Run Code Online (Sandbox Code Playgroud)

这不是我的预期:我试图说'如果名称字段相等,则两个实例相等'.

如果我只是return False__cmp__功能,这也报告True!! 如果我回来-1,那么我得到False- 但是因为我想要比较字符串,这感觉不对.

我在这做错了什么?

python cmp python-2.x

6
推荐指数
2
解决办法
1799
查看次数

Javascript数组如何比较?

是否有标准定义了如何比较JavaScript,在Chrome控制台上我得到了这个

[10,0,0] > [1,0,0]
true
[10,0,0] > [5,0,0]
false
[5, 0, 0, 0] < [10, 0, 0, 0] //repeatable
false

[10,0,0,0] > [9,0,0,0]
false
[11,0,0,0] > [10,0,0,0]
true
Run Code Online (Sandbox Code Playgroud)

这是非常不显眼的,我甚至无法理解正在应用什么逻辑,并且它们看起来可重复,所以不基于对象id(ref)等,所以有没有任何文档呢?

javascript arrays cmp

6
推荐指数
1
解决办法
133
查看次数

按字母顺序排列字符串列表

所以我有一个问题,我该如何排序这个列表:

['Pera','mela','arancia','UVA']

像这样:

['arancia','mela','Pera','UVA']

在练习中,它说使用sorted()带有 cmp 参数的函数。

python list sorted cmp alphabetical-sort

5
推荐指数
2
解决办法
2万
查看次数