当您执行以下操作时,会发生未来警告:
>>> numpy.asarray([1,2,3,None]) == None
Run Code Online (Sandbox Code Playgroud)
目前返回False
,但据我所知,将返回包含[False,False,False,True]
在Numpy的未来版本中的数组.
正如在numpy讨论列表中所讨论的,解决这个问题的方法是测试a is None
.
令我困惑的是,in
与列表相比,具有1D数组的关键字的这种行为:
>>> None in [1,2,3,None]
True
>>> None in numpy.asarray([1,2,3,None])
__main__:1: FutureWarning: comparison to 'None' will result in an elementwise
object comparison in the future
False
>>> 1 in numpy.asarray([1,2,3,None])
True
Run Code Online (Sandbox Code Playgroud)
编辑(见评论) - 真的有两个不同的问题:
FutureWarning
- 将未来的行为None in numpy.asarray(...)
与现在的行为进行比较?in
来自于list
; 我可以测试我的数组是否包含None
而不将其转换为列表或使用for
循环? Numpy版本是1.9.1,Python 3.4.1
设置套接字后,最好在套接字描述符上使用read(2)和write(2)调用,或者使用fdopen(3)将流与套接字描述符关联,然后使用stdio(3)函数?
int sfd = socket(PF_INET, SOCK_STREAM, 0);
// setup the socket using sfd
FILE * stream = fdopen(sfd, "r+");
// use fprintf, fscanf, etc
Run Code Online (Sandbox Code Playgroud)
编辑:我也解密流
setbuf(stream, NULL)
Run Code Online (Sandbox Code Playgroud)
为避免必须按照评论中的提及进行刷新.
我一直在使用这种方法,因为它允许我重用为FILE*流编写的代码,并且我的优点是能够使用格式字符串(我正在使用人类可读的文本).GNU似乎暗示这是一个好主意.
http://www.gnu.org/software/libc/manual/html_node/Streams-and-File-Descriptors.html
但是,通常当我看到使用套接字的代码时,使用套接字描述符而不是所有操作的流.使用较低级别的功能是否有优势?