免责声明:我不是问是否在上限stop
的争论slice()
以及range()
为异或如何使用这些功能.
对函数range
和slice
函数的调用以及切片表示法[start:stop]
都是指整数集.
range([start], stop[, step])
slice([start], stop[, step])
Run Code Online (Sandbox Code Playgroud)
在所有这些中,stop
排除整数.
我想知道为什么语言是这样设计的.
是它使stop
当等于在表示整数集合元素的数量start
等于0或省略?
它有:
for i in range(start, stop):
Run Code Online (Sandbox Code Playgroud)
看起来像下面的C代码?
for (i = start ; i < stop; i++) {
Run Code Online (Sandbox Code Playgroud) 我刚刚在我维护的一些代码中发现了以下部分:
switch (m) {
case 62: { // opening
// some declarations
// do some stuff
break;
case 63:
// do some other stuff
break;
} // closing
default:
// default stuff
break;
}
Run Code Online (Sandbox Code Playgroud)
块打开是为了声明一些局部变量,但是右括号被错误地放置并且发生在后面case 63
.
我几个月都没有注意到这一点,因为它在Visual Studio 2010中编译得很好.我已经尝试过调试它,两种情况都可以正常工作.
怎么会这样 ?这是正确的C语法吗?
据说Emacs 23.3允许通过\?
语法在每次匹配时提示替换字符串的一部分.
应该在迷你缓冲区中提示字符串.
此功能在此处描述:http: //www.gnu.org/software/emacs/manual/html_node/emacs/Regexp-Replace.html
我(query-replace-regexp "^" "\\?")
在Windows上尝试使用Emacs 23.3进行简单替换,但是我得到了"替换文本中无效使用`\"错误.
我对如何使用此功能有任何想法?
注意:我可以使用,\,(read-from-minibuffer "? ")
但这样做会在突出显示匹配之前提示输入字符串.
我认为这不重要,但我的Emacs版本如下:GNU Emacs 23.3.1(i386-mingw-nt6.1.7601).
玩一些来源发现这样的代码:
void foo(unsigned int i)
{
if(i<0)
printf("Less then zero\n");
else
printf("greater or equ\n");
}
int main()
{
int bar = -2;
foo(bar);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我认为没有任何意义,但可能有一些案例(安全性?)使这个检查变得敏感?
我正在尝试为基于SPI的IO扩展器创建通用驱动程序.我们的想法是在实例化中传递初始化值,该初始化值与请求的IO设置相匹配.
我目前的尝试看起来像这样:
entity max7301_simple is
generic (
IO_cfg : array (1 to 7) OF integer range 0 to 255 := (16#55#, 16#55#, 16#55#, 16#55#, 16#55#, 16#55#, 16#55#)
);
port (
-- Application interface :
clk_i : in std_logic; -- input clock, xx MHz.
rst_i : in std_logic; -- sync reset.
en_i : in std_logic; -- enable, forces re-init of pins on MAX7301.
output_i : in std_logic_vector(27 downto 0); --data to write to output pins on MAX7301
irq_o : out std_logic; …
Run Code Online (Sandbox Code Playgroud) 我希望这是可能的.我希望能够像这样编写递归代码:
entity myEntity
generic (
size : natural -- a power of 2
)
port (
-- whatever
);
end;
architecture structural of myEntity is
begin
smallerEntity : entity component.myEntity(structural)
generic map (
size => size/2
);
port map (
...
);
end;
Run Code Online (Sandbox Code Playgroud)
因此,每个体系结构都会实例化一个较小的版本.在通用"大小"的某个值,我希望有一个不同的实现.
这可以通过配置来完成吗?如果是这样,怎么样?
至于为什么我希望能够这样做 - 所以我可以构建可重复使用的代码来计算FFT/DCT和类似的变换.
我想知道您是否有一些链接指向从C迁移到C++的指南.
我主要感兴趣的是检查C代码中可能存在编译器无法检测到的问题的结构?什么是变通方法?
注意:请不要回答编译器能够检测到的事情.
我有:
>>> As = [1, 2, 5, 6]
>>> Bs = [2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
我想要zip_fn
以下内容:
>>> Rs = zip_fn(As, Bs, cmp)
>>> Rs
[(1, None), (2, 2), (None, 3), (None, 4), (5, 5), (6, None)]
Run Code Online (Sandbox Code Playgroud)
换句话说,给定两个任意序列As
和Bs
,我想生成一个元组列表,Rs
以便将满足cmp(a, b) == 0
条件的选择配对到它们自己的元组中(a, b)
,但是将匹配的对象As
和Bs
不匹配的对象分别作为(a, None)
和输出(None, b)
。
一些要点:
As
或不会重复的事情Bs
。Rs
可以是产生相同序列的迭代器。Rs
不重要。我已经使用简单直接的预排序循环实现了满足功能要求的内容,但大约需要30行。我正在寻找可以更好地利用内置itertools
函数或esque库的功能,以缩短代码长度并加快运行速度(C本机)。
编辑:
我应该更清楚地说明这一点。为了简洁起见,尽管在上面的示例中使用了纯数字列表,但是我实际使用的元素是元组,并且cmp …
是否可以拥有通用包装?这意味着当我实例化实体时,我提供了一些泛型,而包将取决于它.
我有一个块,我想多次使用,每次都有不同的包(即不同的参数)
我必须使用包,因为我想使用数组数组,我只能用包来做.
这让我有一段时间的烦恼,但是有可能用VHDL描述类似于模板在C++中工作的实体(或者用于较小的扩展泛型吗?).只是在合成/编译过程中只保留实际的端口类型?
一个例子是多路复用器,比如我有一个4输入多路复用器,现在我有几个总线大小,我使用这个多路复用器,-4,6,7,8-.目前我为每种不同的总线大小写了一个不同的多路复用器; 但是输出只是转发的所选输入之一,因此与总线的类型相同.
这似乎过于冗余且容易出错(在正确的时间选择正确的多路复用器,使它们全部保持一致,在更改总线大小时更新它们).有没有办法参数化这个?
下面的非通用版本显示了这个想法.
entity mux_6bit_4input is
port ( input_0 : in std_logic_vector (5 downto 0);
input_1 : in std_logic_vector (5 downto 0);
input_2 : in std_logic_vector (5 downto 0);
input_3 : in std_logic_vector (5 downto 0);
sel : in std_logic_vector (1 downto 0);
output : out std_logic_vector (5 downto 0)
);
end entity mux_6bit_4input;
Run Code Online (Sandbox Code Playgroud) 我想写一个容器类
data['a']
,属性类访问,例如data.a
; 这是在这里解决的collections.OrderedDict
; 这是在这里解决的我将1.的解决方案改为子类collections.OrderedDict
而不是dict
它但不起作用; 见下文.
from collections import OrderedDict
class mydict(OrderedDict):
def __init__(self, *args, **kwargs):
super(mydict, self).__init__(*args, **kwargs)
self.__dict__ = self
D = mydict(a=1, b=2)
#D['c'] = 3 # fails
D.d = 4
#print D # fails
Run Code Online (Sandbox Code Playgroud)
带有失败注释的两行会导致以下错误:
print D
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/collections.py", line 176, in __repr__
return '%s(%r)' % (self.__class__.__name__, self.items())
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/collections.py", line 113, in items
return [(key, self[key]) for key in self] …
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过python制作直方图.我从以下代码段开始:
def histogram(L):
d = {}
for x in L:
if x in d:
d[x] += 1
else:
d[x] = 1
return d
Run Code Online (Sandbox Code Playgroud)
我理解它使用字典功能来解决问题.但我对第4行感到困惑:if x in d:
d是要构造的,还没有什么,所以如果x在d中怎么样?