522得票13回答
生成器表达式 vs 列表推导式

在Python中,何时应使用生成器表达式,何时应使用列表推导?# Generator expression (x*2 for x in range(256)) # List comprehension [x*2 for x in range(256)]

132得票5回答
这个输入与Python的'any'函数如何配合使用?

在 Python 文档页面上,any 函数的等效代码如下:def any(iterable): for element in iterable: if element: return True return False 如果我以这种形式调...

83得票1回答
生成器作为函数参数

有人能解释一下为什么将生成器作为函数的唯一位置参数传递似乎具有特殊规则吗?如果我们有:def f(*args): print "Success!" print args 这个如预期一样有效。 >>> f(1, *[2]) Success!...

81得票1回答
列表推导式和生成器表达式中的yield

以下行为对我来说似乎相当不符合直觉(Python 3.4):>>> [(yield i) for i in range(3)] <generator object <listcomp> at 0x0245C148> >>> list(...

59得票8回答
一个条件生成表达式出现了意外行为

我正在运行一段代码,但在程序的某个部分意外出现逻辑错误。调查该部分时,我创建了一个测试文件来测试正在运行的语句集,并发现了一个非常奇怪的异常bug。 我测试了这段简单的代码:array = [1, 2, 2, 4, 5] # Original array f = (x for x in ar...

45得票4回答
Python 3中的列表推导式是用来简化`list(generator expression)`语法的吗?

在Python 3中,列表推导式是否只是一种语法糖,将生成器表达式传递给list函数? 例如,下面的代码是否等价:squares = [x**2 for x in range(1000)] 实际上在后台转换成以下内容?squares = list(x**2 for x in range(10...

37得票3回答
列表推导式与生成器表达式的奇怪timeit结果?

我正在回答这个问题,我在这里使用了生成器表达式,并认为这样会更快,因为生成器不需要先创建整个列表: >>> lis=[['a','b','c'],['d','e','f']] >>> 'd' in (y for x in lis for y in x) T...

26得票2回答
next()函数在Python中与any/all配合使用时存在问题。

今天我发现了一个错误,因为我在使用next()方法提取一个值时,当值不存在时会抛出StopIteration的异常。 通常情况下,这会停止程序。但是,在一个all()迭代中调用使用next的函数时,all只是提前终止并返回True。 这是预期行为吗?有没有样式指南可以帮助避免这种情况? ...

23得票2回答
Python生成器表达式括号的奇怪之处

我想确定一个列表中是否包含某个字符串,因此我使用了生成器表达式,代码如下:g = (s for s in myList if s == myString) any(g) 当然我想要内联这个东西,于是我这样做:any((s for s in myList if s == myString)) 我...

21得票2回答
在列表推导式或生成器表达式中使用while

我可以在列表推导式/生成器表达式中使用 if 和 for 关键字,如下:list(i for i in range(100) if i*i < 30) 我知道这并不是最有效率的方法,但请容忍我,因为条件可能更加复杂,这只是一个示例。然而,这仍然需要进行数百次迭代,而且只在前6次迭代中产生...