小编Evg*_*eev的帖子

Matlab:int32(2)/ int32(3)给出1.如何得到正常的整数除法?

当我将代码从C++,Java,Python等语言移植到Matlab中时,需要它以与整数相同的方式运行.

int32(n)不适用于除法(见帖子标题).有类型吗?

编辑:猜猜是什么,事实证明我最喜欢的语言并不像我想象的那样一致.C++:

#include <cstdio>
int main() {
    #define TEST(a, b)  printf("%d / %d = %d\n", (a), (b), (a)/(b));
    TEST(-4, 3);
    TEST(4, -3);
    TEST(-5, 3);
    TEST(5, -3);
    TEST(-1, 2);
    TEST(1, -2);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

生产:

-4 / 3 = -1
4 / -3 = -1
-5 / 3 = -1
5 / -3 = -1
-1 / 2 = 0
1 / -2 = 0
Run Code Online (Sandbox Code Playgroud)

蟒蛇:

def TEST(a, b): return (a)/(b)

>>> TEST(-4, 3);
-2
>>> TEST(4, -3);
-2 …
Run Code Online (Sandbox Code Playgroud)

matlab

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

Matlab - 用于循环遍历单元格数组"foreach"的语法仅在第一个元素上循环

我想如果我写的话

for x = cell_array
    ...
end
Run Code Online (Sandbox Code Playgroud)

然后循环将遍历元素cell_array,但在以下情况下它不会:

>> tags

tags = 

    'dset3'
    'dset4'
    'cpl1'

>> class(tags)

ans =

cell

>> for t = tags
     tmp = t{:}  %No semicolon: i.e. print it.
   end

tmp =

dset3
Run Code Online (Sandbox Code Playgroud)

所以它只适用于第一个元素.

有什么问题?

syntax matlab loops for-loop cell-array

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

Keymap, InputMap, ActionMap, KeyListener — 选择重载

我找不到关于所有这些之间关系的简明答案,以便我可以选择最佳实践并开始。JTextComponent已:

  • 旧的addKeyListener(..)。我们写一个KeyListener与被调用的方法keyPressed(..)keyTyped(..)等事件,我们可以查询:event.getKeyCode()

  • addKeymap(..)setKeymap(..)。A Keymaphas addActionForKeyStroke(..),它接受 a KeyStroke(我们可以通过调用KeyStroke的静态方法来指定字符或键码)和 an Action,它是一个ActionListener带有花里胡哨的东西。

  • getInputMap(..)getActionMap(..)。AnInputMap将 a KeyStroke(如上)映射到 a String,并将ActionMap字符串映射到 an Action(如上)。Java 教程如何使用键绑定讨论了这一点。

这是实现相同功能的三种冗余方式。除了比较优势/劣势之外,这自然会引发一个问题,即这三种机制如何共存?哪些优先于其他?

java swing jcomponent keylistener key-bindings

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

Python的扩展切片表示法的形式语法?

例如,Numpy允许多维切片:

a[:, 0, 7:9]
Run Code Online (Sandbox Code Playgroud)

这提出了一个问题:还有什么可能吗?(想象一下可能性!)

根据此答案和一些试验(见下文),如果有一个逗号,Python的构建物,其中的一些可以是切片对象的元组,并且(作为传递key)到__getitem__(self, key)a.

文档__getitem__(..)未指定此行为.有没有我错过的官方文件?特别是,这种语法如何向后兼容?(在网上搜索"python扩展切片表示法"给出了"Python 2.3中的新功能",但没有提到它.)


实验

>>> class Test(object):
...     def __getitem__(self, x):
...         print repr(x)


>>> t = Test()
Run Code Online (Sandbox Code Playgroud)

首先,Python发现可以识别多切片的东西:

>>> t[1]
1

>>> t['a':,]
(slice('a', None, None),)

>>> t['a':7:('b','c'),]
(slice('a', 7, ('b', 'c')),)

# Seems like it can be arbitrary objects?
>>> t[(t,t):[4,5]]
slice((<__main__.Test object at 0x07D04950>, <__main__.Test object at 0x07D04950>), [4, 5], None)

>>> t[::]
slice(None, None, None)

>>> t[:] …
Run Code Online (Sandbox Code Playgroud)

python syntax slice

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