标签: cmp

如何更改实例的__cmp__函数(不在类中)?

如何更改实例的__cmp__函数(不在类中)?

例如:

class foo:
    def __init__(self, num):
        self.num = num

def cmp(self, other):
    return self.num - other.num

# Change __cmp__ function in class works
foo.__cmp__ = cmp
a = foo(1)
b = foo(1)

# returns True
a == b



# Change __cmp__ function in instance that way doesnt work
def cmp2(self, other):
    return -1

a.__cmp__ = cmp2
b.__cmp__ = cmp2

# Raise error 
a == b
#Traceback (most recent call last):
#  File "<stdin>", line 1, in <module>
#TypeError: cmp2() …
Run Code Online (Sandbox Code Playgroud)

python metaprogramming cmp

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

TypeError:'cmp'是此函数的无效关键字参数

我正在使用Python3,但脚本与此版本不兼容,我遇到了一些错误.现在我的cmp参数有问题.这是代码

def my_cmp(x,y):
    counter = lambda x, items: reduce(lambda a,b:a+b, [list(x).count(xx) for xx in items])
    tmp =  cmp(counter(x, [2,3,4,5]), counter(y, [2,3,4,5]))
    return tmp if tmp!=0 else cmp(len(x),len(y)) 

for i, t in enumerate([tmp[0] for tmp in sorted(zip(tracks, self.mapping[idx][track_selection[-1]].iloc[0]), cmp=my_cmp, key=lambda x:x[1])]):
    img[i,:len(t)] = t
Run Code Online (Sandbox Code Playgroud)

我真的很感激如何在Python3中处理这个错误.

python sorting cmp python-2.x python-3.x

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

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

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

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

像这样:

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

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

python list sorted cmp alphabetical-sort

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

使用cmp在Python中排序()

我正在尝试对列表进行排序,将所有0移到列表的末尾.示例:[0,1,0,2,3,0,4] - > [1,2,3,4,0,0,0]

我看到有人在一行编码

list.sort(cmp=lambda a,b:-1 if b==0 else 0)
Run Code Online (Sandbox Code Playgroud)

但我不明白括号内的意思.

有谁能告诉我?谢谢.

python sorting lambda cmp

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

按字典顺序排序

我看到以下代码的结果,但我不明白or在下面的sort例子中知道该怎么做:

use Data::Dumper;

$animals{'man'}{'name'} = 'paul';
$animals{'man'}{'legs'} = 2;
$animals{'cheeta'}{'name'} = 'mike';
$animals{'cheeta'}{'legs'} = 3;
$animals{'zebra'}{'name'} = 'steve';
$animals{'zebra'}{'legs'} = 4;
$animals{'cat'}{'name'} = '';
$animals{'cat'}{'legs'} = 3;
$animals{'dog'}{'name'} = '';
$animals{'dog'}{'legs'} = 4;
$animals{'rat'}{'name'} = '';
$animals{'rat'}{'legs'} = 5;

@animals = sort {
      $animals{$a}{'name'} cmp $animals{$b}{'name'}
   or $animals{$a}{'legs'} <=> $animals{$b}{'legs'}
} keys %animals;

print Dumper(\@animals);
Run Code Online (Sandbox Code Playgroud)

sorting perl cmp lexicographic

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

比较同一文件中的两行

给定如下文件:-

01/09/2005
02/09/2005
03/09/2006
03/09/2006
Run Code Online (Sandbox Code Playgroud)

我希望比较最后两行是否相同,如果相同则返回 1,否则返回 0。

我可以使用最后两个 cat tail -2

unix linux diff cmp uniq

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

使用cmpq和je时无限循环

我在每次迭代时递减RAX.如果RAX为零,程序应该改变流程.

# AT&T syntax
start_calc_factorial:
  decq %rax
  cmpq $0, %rax
  je quit_calc_factorial
  mulq %rcx
  jmp start_calc_factorial
Run Code Online (Sandbox Code Playgroud)

但是,该程序永远不会终止.调试器告诉我RAX的值为0xa0257c7238581842(它可能是下溢的,但它不应该因为je指令).RAX的初始值为7.

可能是什么问题呢?

assembly x86-64 cmp decrement

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

Bash,使用cmp时如何打印出来的文件是一样的

cmp file1 file2文件相同时什么都不做.那么如何在shell脚本中打印出相同的文件呢?

bash cmp

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

cmp命令返回EOF在我的输出上尽管​​我可以告诉完全匹配

因此,我首先要说的是这是一门课程,我假设如果cmp返回一些奇怪的信息,教授将不会真正在意它们是否相同。我正在尝试将我的名为uout的代码的输出与正确的输出(在correct0文件中)进行比较。但是,问题在于它返回“ cmp:uout上的EOF”。通过一点点挖掘,我发现EOF表示它们在较短文件的末尾都是相同的,而较短文件是以EOF命名的文件,因此我从中收集到的是它们是相同的,直到uout结束为止。然而问题是,它绝对不会以短时间结束。在文本编辑器中打开并手动检查空格,行号和列号等时,所有内容都完全匹配。

为了说明我的观点,这里是使用ctrl-a + ctrl-v直接复制的文件:

正确0 http://pastebin.com/Bx7SM7rA

uout http://pastebin.com/epMFtFpM

如果有人知道出了什么问题并且可以简单地解释,我将不胜感激。我已经检查了多次,找不到任何问题。也许这很简单,我只是看不到它,但是到目前为止,我所看到的一切似乎都表明文件是相同的,直到“较短的文件”结束为止,而且即使我将执行从

cmp correct0 uout
Run Code Online (Sandbox Code Playgroud)

cmp uout correct0
Run Code Online (Sandbox Code Playgroud)

两个实例最终都返回

cmp: EOF on uout
Run Code Online (Sandbox Code Playgroud)

c unix compare cmp output

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

如何将IA32'cmp'指令转换为Y86?

IA32Y86

ATT大会

我有以下IA32汇编代码:

Bubble:
.LFB0:
    pushl   %esi
    pushl   %ebx
    movl    16(%esp), %esi
    movl    12(%esp), %edx
    subl    $1, %esi
    andl    %esi, %esi
    jle .L1
.L7:
    xorl    %eax, %eax
.L5:
    movl    4(%edx,%eax,4), %ecx
    movl    (%edx,%eax,4), %ebx
    cmpl    %ebx, %ecx
    jge .L4
    movl    %ebx, 4(%edx,%eax,4)
    movl    %ecx, (%edx,%eax,4)
.L4:  
    addl    $1, %eax
    cmpl    %eax, %esi
    jg  .L5
    subl    $1, %esi
    jne .L7
.L1: 
    popl    %ebx
    popl    %esi
    ret
Run Code Online (Sandbox Code Playgroud)

我正在尝试将其转换为Y86汇编代码.我在翻译比较指令时遇到问题:

 cmpl    %ebx, %ecx
Run Code Online (Sandbox Code Playgroud)

谢谢.

x86 assembly cmp y86

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