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

Car*_*ton 57 python

我有以下清单

j=[4,5,6,7,1,3,7,5]
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*zek 81

您可以使用列表推导来过滤它:

j2 = [i for i in j if i >= 5]
Run Code Online (Sandbox Code Playgroud)

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

j2 = sorted(i for i in j if i >= 5)
Run Code Online (Sandbox Code Playgroud)

或致电sort最终名单:

j2 = [i for i in j if i >= 5]
j2.sort()
Run Code Online (Sandbox Code Playgroud)

  • @İsmail'cartman'Dönmez:那可能是因为它是一个SyntaxError :) (3认同)

Jus*_*ini 12

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

j2 = [x for x in j if x >= 5]
Run Code Online (Sandbox Code Playgroud)

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

j2 = filter(lambda x: x >= 5, j)
Run Code Online (Sandbox Code Playgroud)

请注意,原始列表j未经修改.


sep*_*p2k 9

您可以使用列表理解:

[x for x in j if x >= 5]
Run Code Online (Sandbox Code Playgroud)


U10*_*ard 5

使用(简短版本,不使用 , usingfilter执行函数):lambda__le__

\n
j2 = filter((5).__le__, j)\n
Run Code Online (Sandbox Code Playgroud)\n

示例(Python\xc2\xa03):

\n
>>> j=[4,5,6,7,1,3,7,5]\n>>> j2 = filter((5).__le__, j)\n>>> j2\n<filter object at 0x000000955D16DC18>\n>>> list(j2)\n[5, 6, 7, 7, 5]\n>>>\n
Run Code Online (Sandbox Code Playgroud)\n

示例(Python\xc2\xa02):

\n
>>> j=[4,5,6,7,1,3,7,5]\n>>> j2 = filter((5).__le__, j)\n>>> j2\n[5, 6, 7, 7, 5]\n>>>\n
Run Code Online (Sandbox Code Playgroud)\n

使用__le__。我推荐这个。这很容易。__le__是你的朋友。

\n

如果想将其排序到所需的输出(两个版本):

\n
>>> j=[4,5,6,7,1,3,7,5]\n>>> j2 = filter((5).__le__, j)\n>>> sorted(j2)\n[5, 5, 6, 7, 7]\n>>>\n
Run Code Online (Sandbox Code Playgroud)\n

使用sorted

\n

时间:

\n
>>> from timeit import timeit\n>>> timeit(lambda: [i for i in j if i >= 5]) # Michael Mrozek\n1.4558496298222325\n>>> timeit(lambda: filter(lambda x: x >= 5, j)) # Justin Ardini\n0.693048732089828\n>>> timeit(lambda: filter((5).__le__, j)) # Mine\n0.714461565831428\n>>>\n
Run Code Online (Sandbox Code Playgroud)\n

所以贾斯汀赢了!!

\n

number=1

\n
>>> from timeit import timeit\n>>> timeit(lambda: [i for i in j if i >= 5],number=1) # Michael Mrozek\n1.642193421957927e-05\n>>> timeit(lambda: filter(lambda x: x >= 5, j),number=1) # Justin Ardini\n3.421236300482633e-06\n>>> timeit(lambda: filter((5).__le__, j),number=1) # Mine\n1.8474676011237534e-05\n>>>\n
Run Code Online (Sandbox Code Playgroud)\n

所以迈克尔赢了!!

\n
>>> from timeit import timeit\n>>> timeit(lambda: [i for i in j if i >= 5],number=10) # Michael Mrozek\n4.721306089550126e-05\n>>> timeit(lambda: filter(lambda x: x >= 5, j),number=10) # Justin Ardini\n1.0947956184281793e-05\n>>> timeit(lambda: filter((5).__le__, j),number=10) # Mine\n1.5053439710754901e-05\n>>>\n
Run Code Online (Sandbox Code Playgroud)\n

所以贾斯汀再次获胜!!

\n