哪种优雅的方法可以将[x for x in y]
的结果从列表转换为常规变量?
result= [x for x in range(10) if x==7]
上述结果将是[7]
。我现在正在使用result=result[0]
,但是...看起来不正确: - )
谢谢
您在右侧有一个列表理解。它评估到列表。
您想从中获取第一个元素(这也许是您要解决的问题的唯一元素),因此将列表理解返回的列表中的第0元素索引,就像您会为常规列表做。
result = [x for x in range(10) if x == 7][0]
您也可以使用发电机表达式而不是列表表达式,然后调用Next()函数以从发电机表达式返回的迭代器中检索第一个项目。
result = next(x for x in range(10) if x == 7)
您可以使用从迭代器中检索下一个对象的next
。next
内的参数为A Generator 。这使您免于完全构造列表,然后为7
进行过滤。相反,它仅迭代直到击中7
,并且不会评估直到在发电机对象上调用下一个next(..)
。
>>> next(x for x in range(10) if x==7)
7