正如我在评论这个答案后才注意到的那样,Python 3中的切片返回了他们正在切片而不是视图的浅层副本.为什么仍然如此?即使撇开观点numpy的的使用,而不是切片的副本,事实证明dict.keys
,dict.values
和dict.items
在Python 3所有回报的意见,并有走向更大的使用迭代器面向Python 3中的其他许多方面,使它看起来将会有些切片变得相似的运动.itertools
确实有一个islice
函数可以进行迭代切片,但是它比普通切片更有限,并且不提供沿着dict.keys
或者行的视图功能dict.values
.
同样,你可以使用赋值给切片来修改原始列表,但切片本身就是副本而不是视图,这是语言的一个矛盾方面,似乎它违反了Python的Zen中所说明的几个原则.
也就是说,你可以做的事实
>>> a = [1, 2, 3, 4, 5]
>>> a[::2] = [0, 0, 0]
>>> a
[0, 2, 0, 4, 0]
Run Code Online (Sandbox Code Playgroud)
但不是
>>> a = [1, 2, 3, 4, 5]
>>> a[::2][0] = 0
>>> a
[0, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
或类似的东西
>>> a = [1, 2, 3, 4, 5]
>>> b = a[::2]
>>> b …
Run Code Online (Sandbox Code Playgroud) 在Python 3.3中,itertools.accumulate()
通常会对提供的iterable重复应用加法运算,现在可以将函数参数作为参数; 这意味着它现在重叠functools.reduce()
.粗略看一下,现在两者之间的主要区别似乎是:
accumulate()
默认为求和但不允许显式提供额外的初始条件,reduce()
而不默认为任何方法但允许您提供初始条件以使用1/0元素序列,并且accumulate()
首先采用迭代,然后先reduce()
获取函数.这两者之间还有其他差异吗?或者这仅仅是两个函数的行为问题,最初的不同用途开始随时间收敛?
为什么-std=c++11
在编译直接或间接使用的程序时指定std::thread
并不暗示-pthread
?std::thread
使用pthreads 的实现细节暴露给程序员似乎很奇怪; 如果这是给用户选择posix兼容的线程库的问题,为什么不默认为pthreads并有一些--threading-model=<your_favorite_posix_threads_library>
参数来覆盖它?
在使用Atmel SAM3X8E处理嵌入式系统项目时,我注意到某些CMSIS头文件中的以下代码.
#ifndef __cplusplus
typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */
#else
typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */
#endif
Run Code Online (Sandbox Code Playgroud)
为什么C++的typedef不包含const
?我在某处看到C++没有在运行时内存中存储整数const变量,如果为true则意味着const
由于微控制器寄存器的内存映射方式需要删除它,但我似乎无法找到其他任何说法C++就是这样做的(尽管我的搜索非常简短).我没有太多的C++经验,我也认为可能是C++不允许使用const
struct成员,因为那些typedef主要用于struct typedef中的寄存器集合,但似乎也不是这样.
我想使用我在这里找到的Python扩展,但是我正在使用Python 3.1,当我尝试编译包中包含的C扩展(_wincon)时,由于所有语法错误,它都无法编译.不幸的是,它是为2.x版本的Python编写的,因此包括诸如PyMember_Get
和的方法PyMember_Set
,它们不再是Python的一部分.我的问题是我还没有学习C,因此无法弄清楚如何修改代码以使用在Python 3.1中仍然有效的语法.(还有一些像staticforward
需要修复的宏,但我认为只需要改变它们static
.)因此:我该如何解决这个问题呢?
(请注意,我确实已经研究过各种其他用于Python的Windows控制台界面,例如PyWin32中的win32con扩展),但它们都不符合我的需求,就像这个看起来那么多.)