在哪里或过滤列表

编程入门 行业动态 更新时间:2024-10-28 16:22:47
本文介绍了在哪里或过滤列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

有人能告诉我如何在列表中找到最近的零值 ? 为此,我使用list comprenhension:

Hi, Can anybody tell me how to to find the nearest value to zero in a list ? To do that, i''m using list comprenhension :

> > foo = [ - 5,-1,2,3]#最接近零的值? [foo中的值,如果math.fabs(value)== min([int(math.fabs(x) ))for f in foo])] >>foo = [-5,-1,2,3] # nearest value to zero ?[value for value in foo if math.fabs(value) == min([int(math.fabs(x)) for x in foo])]

[-1] Something更简单? 如何将此功能扩展到任何给定值? 谢谢, CH。

[-1] Something simpler ? How to extend this function to any given value ? Thanks, CH.

推荐答案

>>> foo = [ - 5,-1,2,3]#最接近零的值? >>>foo = [-5,-1,2,3] # nearest value to zero ? >>> [foo中的值,如果是math.fabs(值) )== min([int(math.fabs(x))for f in foo])] >>>[value for value in foo if math.fabs(value) == min([int(math.fabs(x)) for x in foo])]

charles [-1 ] charlesSomething更简单? 好​​吧,你可以使用abs()内置而不是math.fabs。另外,只需 一次计算min / abs: minval = min([int(math.fabs(x))for f in foo]) [foo中的值,如果fabs(value)== minval] 另一种方法可能是按绝对值排序: intermed = [(abs(v),v)for v in foo] intermed.sort() intermed [0] [1 ] 只给你一个可能接近零的值。 charles如何将这个函数扩展到任何给定的值? 只需从列表中的所有值中减去该值: intermed = [(abs(vx),v)for f in foo] intermed.sort() intermed [0] [1] Skip

charles[-1] charlesSomething simpler ? Well, you can just use the abs() builtin instead of math.fabs. Also, just compute the min/abs once: minval = min([int(math.fabs(x)) for x in foo]) [value for value in foo if fabs(value) == minval] Another way might be to sort by absolute value: intermed = [(abs(v), v) for v in foo] intermed.sort() intermed[0][1] That only gives you one of possibly many values closest to zero. charlesHow to extend this function to any given value ? Just subtract that value from all values in the list: intermed = [(abs(v-x), v) for v in foo] intermed.sort() intermed[0][1] Skip

sk**@pobox 写道: sk**@pobox wrote: 另一种方法可能是按绝对值排序: intermed = [(abs(v),v)for f in foo] intermed.sort( ) intermed [0] [1] Another way might be to sort by absolute value: intermed = [(abs(v), v) for v in foo] intermed.sort() intermed[0][1]

如果使用sorted(假设最近有足够的Python),它会稍微简单一点: intermed = sorted(foo,key = abs) print intermed [0] 排序列表当然是最好的方式,如果你想要的话找到一个不仅仅是一个价值的b $ b值,例如n最接近0. 对于最接近非零值的v,带有排序的版本变为: intermed = sorted(foo) ,key = lambda x:abs(xv))

It is slightly simpler if you use sorted (assuming a recent enough Python): intermed = sorted(foo, key=abs) print intermed[0] The sorted list is of course the best way if you want to find not just one value but a group, e.g. the n nearest to 0. For nearest to a non-zero value v the version with sorted becomes: intermed = sorted(foo, key=lambda x:abs(x-v))

ch ************ @ gmail < ch ************ @ gmailwrote: ch************@gmail <ch************@gmailwrote: 有人能告诉我如何在 列表中找到最接近的零值吗? Can anybody tell me how to to find the nearest value to zero in a list?

> foo = [-5,-1,2,3 ]#最接近零的值? [foo中的值,如果math.fabs(value)== min([int(math.fabs(x))for f in foo])] >foo = [-5,-1,2,3] # nearest value to zero ?[value for value in foo if math.fabs(value) == min([int(math.fabs(x)) for x in foo])]

[-1]

[-1]

更简单? Something simpler ?

也许是这样的: mindist = min(地图(abs,foo)) filter(lambda x:abs(x)== mindist,a)[0] 只有烦恼:我们为每个值计算两次abs。我们可能通过使用reduce()和合适的函数来避免 ...

Maybe something like this: mindist = min(map(abs, foo)) filter(lambda x: abs(x) == mindist, a)[0] Only annoyance: we compute abs twice for each value. We could probably avoid that by using reduce() and a suitable function...

如何将此函数扩展到任何给定值? How to extend this function to any given value ?

从foo中减去所需的值。 cu Philipp - Philipp Pagel博士电话。 + 49-8161-71 2131 基因组定向生物信息学传真部。 + 49-8161-71 2186 慕尼黑技术大学 mips.gsf.de/staff/pagel

更多推荐

在哪里或过滤列表

本文发布于:2023-10-08 14:11:42,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1472863.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:列表

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!