Python 创建一个具有布尔值的列表,这些布尔值表示应用于列表时谓词的结果

Python 创建一个具有布尔值的列表,这些布尔值表示应用于列表时谓词的结果,python,python-3.x,list-comprehension,Python,Python 3.x,List Comprehension,我试图找出在Python3中是否有一种通过比较获得逻辑列表的方法。 基本上我想输入的是 x = [1, 2, 3, 4, 5, 6, 7, 8, 9] xlist = 4 <= x 是否有任何方法可以简单地做到这一点而不使用列表理解 xlist = [4 <= i for i in x] xList=(4)p>我认为你已经做对了。 我认为你已经做对了。 考虑的一件事是你是否需要中间列表。如果不使用A代替。例如(i)P>一个要考虑的事情是你是否需要中间列表。如果不使用A代替。例如

我试图找出在Python3中是否有一种通过比较获得逻辑列表的方法。 基本上我想输入的是

x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
xlist = 4 <= x
是否有任何方法可以简单地做到这一点而不使用列表理解

xlist = [4 <= i for i in x]

<代码> xList=(4)p>我认为你已经做对了。

我认为你已经做对了。

考虑的一件事是你是否需要中间列表。如果不使用A代替。例如<代码>(i)P>一个要考虑的事情是你是否需要中间列表。如果不使用A代替。例如,<>代码>所有(i<P)列表理解确实没有错。这正是列表理解的设计。

如果您使用的是NumPy(或SciPy),那么您要查找的语法实际上是有效的:

from numpy import array

...

x = array([1,2,3,4,5,6,7,8,9])
xlist = 4<=x
从numpy导入数组
...
x=数组([1,2,3,4,5,6,7,8,9])

xlist=4列表理解并没有什么错。这正是列表理解设计的目的

如果您使用的是NumPy(或SciPy),那么您要查找的语法实际上是有效的:

from numpy import array

...

x = array([1,2,3,4,5,6,7,8,9])
xlist = 4<=x
从numpy导入数组
...
x=数组([1,2,3,4,5,6,7,8,9])
xlist=4对于大型列表,这:

>>> (4<=i for i in range(1,10))
<generator object <genexpr> at 0xb75beedc>
>>> list(_)
[False, False, False, True, True, True, True, True, True]
# The list(_) is just to show what is inside the generator...
>(4>>列表()
[假,假,假,真,真,真,真,真,真,真]
#该列表(41;只是显示生成器中的内容。。。
优于:

>>> [4<=i for i in range(1,10)]
[False, False, False, True, True, True, True, True, True]
>>[4对于大型列表,这:

>>> (4<=i for i in range(1,10))
<generator object <genexpr> at 0xb75beedc>
>>> list(_)
[False, False, False, True, True, True, True, True, True]
# The list(_) is just to show what is inside the generator...
>(4>>列表()
[假,假,假,真,真,真,真,真,真,真]
#该列表(41;只是显示生成器中的内容。。。
优于:

>>> [4<=i for i in range(1,10)]
[False, False, False, True, True, True, True, True, True]

>>[4您还可以使用以下功能:

print map(lambda i: 4<=i, xrange(1,10))

打印地图(lambda i:4您还可以使用以下工具:

print map(lambda i: 4<=i, xrange(1,10))

打印地图(lambda i:4地图方法可能更快,但如果你真的想知道,请描述一下

也考虑数组模块。

In [2]: %timeit map(lambda i: 4<=i, xrange(1,100))
100000 loops, best of 3: 15.9 us per loop

In [7]: %timeit list(4<=i for i in range(1,100))
100000 loops, best of 3: 10.3 us per loop

In [8]: %timeit list(4<=i for i in range(1,1000))
10000 loops, best of 3: 80.6 us per loop

In [10]: %timeit map(lambda i: 4<=i, xrange(1,1000))
10000 loops, best of 3: 155 us per loop

在[2]:%timeit map(lambda i:4map方法可能更快,但是,如果你真的想知道,请描述一下它们

也考虑数组模块。

In [2]: %timeit map(lambda i: 4<=i, xrange(1,100))
100000 loops, best of 3: 15.9 us per loop

In [7]: %timeit list(4<=i for i in range(1,100))
100000 loops, best of 3: 10.3 us per loop

In [8]: %timeit list(4<=i for i in range(1,1000))
10000 loops, best of 3: 80.6 us per loop

In [10]: %timeit map(lambda i: 4<=i, xrange(1,1000))
10000 loops, best of 3: 155 us per loop

[2]中的
:%timeit映射(lambda i:4为什么你觉得列表理解效率低下?列表总是被排序的吗?如果不是,那么我看不出你可以如何绕过测试列表中的每个值。列表理解是一种有效的方法。为什么你觉得列表理解效率低下?列表总是被排序的吗?如果不是,那么我不知道了解如何绕过测试列表中的每个值。列表理解是一种有效的方法。