python 返回列表中大于某个值的项的列表

6mzjoqzu  于 2022-12-17  发布在  Python
关注(0)|答案(7)|浏览(294)

我有以下列表

j=[4,5,6,7,1,3,7,5]

返回[5,5,6,7,7]是j中大于或等于5的元素的最简单方法是什么?

bfhwhh0e

bfhwhh0e1#

你可以使用列表解析来过滤它:

j2 = [i for i in j if i >= 5]

如果你真的想让它像你的例子一样排序,你可以使用sorted:

j2 = sorted(i for i in j if i >= 5)

或者调用最终列表中的sort

j2 = [i for i in j if i >= 5]
j2.sort()
xriantvc

xriantvc2#

列表解析是一种简单的方法:

j2 = [x for x in j if x >= 5]

或者,可以使用filter获得完全相同的结果:

j2 = filter(lambda x: x >= 5, j)

注意,原始列表j未被修改。

wbgh16ku

wbgh16ku3#

你可以使用列表解析:

[x for x in j if x >= 5]
guykilcj

guykilcj4#

使用filter(不使用lambda执行函数的简短版本,使用__le__):

j2 = filter((5).__le__, j)

示例(Python 3):

>>> j=[4,5,6,7,1,3,7,5]
>>> j2 = filter((5).__le__, j)
>>> j2
<filter object at 0x000000955D16DC18>
>>> list(j2)
[5, 6, 7, 7, 5]
>>>

示例(Python 2):

>>> j=[4,5,6,7,1,3,7,5]
>>> j2 = filter((5).__le__, j)
>>> j2
[5, 6, 7, 7, 5]
>>>

使用__le__。我推荐这个。它非常简单。__le__是你的朋友。
如果要将其排序为所需输出(两个版本):

>>> j=[4,5,6,7,1,3,7,5]
>>> j2 = filter((5).__le__, j)
>>> sorted(j2)
[5, 5, 6, 7, 7]
>>>

使用sorted

计时:

>>> from timeit import timeit
>>> timeit(lambda: [i for i in j if i >= 5]) # Michael Mrozek
1.4558496298222325
>>> timeit(lambda: filter(lambda x: x >= 5, j)) # Justin Ardini
0.693048732089828
>>> timeit(lambda: filter((5).__le__, j)) # Mine
0.714461565831428
>>>

所以贾斯汀赢了!!
使用number=1

>>> from timeit import timeit
>>> timeit(lambda: [i for i in j if i >= 5],number=1) # Michael Mrozek
1.642193421957927e-05
>>> timeit(lambda: filter(lambda x: x >= 5, j),number=1) # Justin Ardini
3.421236300482633e-06
>>> timeit(lambda: filter((5).__le__, j),number=1) # Mine
1.8474676011237534e-05
>>>

所以迈克尔赢了!!

>>> from timeit import timeit
>>> timeit(lambda: [i for i in j if i >= 5],number=10) # Michael Mrozek
4.721306089550126e-05
>>> timeit(lambda: filter(lambda x: x >= 5, j),number=10) # Justin Ardini
1.0947956184281793e-05
>>> timeit(lambda: filter((5).__le__, j),number=10) # Mine
1.5053439710754901e-05
>>>

所以贾斯汀又赢了!!

vktxenjb

vktxenjb5#

如果您正在考虑使用NumPy模块,它会使此任务变得非常简单,正如所要求的那样:

import numpy as np

j = np.array([4, 5, 6, 7, 1, 3, 7, 5])

j2 = np.sort(j[j >= 5])

方括号内的代码j >= 5生成一个TrueFalse值列表,这些值作为索引从j中选择所需的值,最后,我们使用NumPy内置的sort函数进行排序。
测试结果(NumPy数组):

array([5, 5, 6, 7, 7])
zrfyljdw

zrfyljdw6#

由于所需的输出已排序,因此还需要对其进行排序:

>>> j=[4, 5, 6, 7, 1, 3, 7, 5]
>>> sorted(x for x in j if x >= 5)
[5, 5, 6, 7, 7]
mitkmikd

mitkmikd7#

还有一个办法

j3 = j2 > 4
print(j2[j3])

它在Python 3中进行了测试。

相关问题