这可能是一个愚蠢的问题,但是看看运算符到函数的映射,我注意到没有表达not in运算符的函数.起初我认为这可能是因为解释器只是重新排序not x in y,但有一个函数is not似乎应该表现得完全相同not in.我错过了什么,或者该操作员真的不存在?
这是一个非常愚蠢的例子,你可能想要这个:
def compare_iter(a,b,func):
return [func(aa,bb) for aa,bb in zip(a,b)]
my_compare=compare_iter(xx,yy,lambda x,y:x not in y) #lambda -- yuck
my_compare=map(operator.not_,compare_iter(xx,yy,operator.contains) #extra map? grr...
#it would be nice to do: my_compare=compare_iter(xx,yy,operator.not_contains)
Run Code Online (Sandbox Code Playgroud)
当然我可以为此编写自己的函数,但是你需要为效率付出代价,而运算符模块可以将这些代码从python中推出,因此执行速度更快.
有没有一种有效的方法从numpy数组中删除Nones并将数组调整为新的大小?
例如,如果不在python中迭代它,你将如何从这个帧中删除None.我可以轻松地遍历它,但正在进行一次可能被多次调用的api调用.
a = np.array([1,45,23,23,1234,3432,-1232,-34,233,None])
Run Code Online (Sandbox Code Playgroud) 编辑:阅读建议的链接后,我不知道为什么这被标记为重复.起诉我.
任何人都可以帮助我理解为什么filter(None, [list of bools])删除False值?
请考虑以下事项:
low = 25
high = 35
to_match = [15, 30, 32, 99]
def check(low, high, to_match):
return [low <= i <= high for i in to_match]
Run Code Online (Sandbox Code Playgroud)
check(low, high, to_match) 回报 [False, True, True, False]
filter(None, check(low, high, to_match)) 回报 [True, True]
所以我想,Python必须考虑的False是None!令我惊讶的是,False is None回归False!
A)我错过了什么?
B)如何仅过滤None来自的值[True, None, False]?
我有一个函数调用crawl,它将返回一个网站的链接.然后我做了类似的事情:
found.append(crawl()) (找到了一个清单)
只要爬网返回有效链接,这样就可以正常工作,但有时它不会返回任何内容.因此,将值None添加到列表中.
所以我的问题是,是否可以从中返回一些crawl不会在列表中添加任何内容的内容?
我map用来处理Python3.6中的列表:
def calc(num):
if num > 5:
return None
return num * 2
r = map(lambda num: clac(num), range(1, 10))
print(list(r))
# => [2, 4, 6, 8, 10, None, None, None, None]
Run Code Online (Sandbox Code Playgroud)
我期望的结果是:[2, 4, 6, 8, 10]。
当然,我可以使用它filter来处理map结果。但是有没有办法map直接返回我想要的结果?
我在我正在阅读的一段代码中看到了以下行,但我不明白它的目的:
my_list = list(filter(None, my_list))
Run Code Online (Sandbox Code Playgroud)
my_list只是一个单词列表。为什么有人会选择这样做?在我看来,所有这些都按原样返回列表。
现在我有一个像这样的列表对象:
lst = [None, None, 'one', None, 'two', None]
Run Code Online (Sandbox Code Playgroud)
我正在尝试对它执行strip()并获得如下结果:
strip(lst)
>> ['one', None, 'two']
left_strip(lst)
>> ['one', None, 'two', None]
Run Code Online (Sandbox Code Playgroud)
这样做有一种优雅的方式吗?
PS:感谢4 @ woockashek的建议,我已经改变了地表温度
从[None, None, 'one','two', None]要[None, None, 'one', None, 'two', None]