A. *_*iev 2 python list-comprehension
例如,这个片段:
out = []
for foo in foo_list:
out.extend(get_bar_list(foo)) # get_bar_list return list with some data
return out
Run Code Online (Sandbox Code Playgroud)
如何使用列表理解来缩短此代码?
您可以使用生成器表达式并使用它itertools.chain:
from itertools import chain
out = list(chain.from_iterable(get_bar_list(foo) for foo in foo_list))
Run Code Online (Sandbox Code Playgroud)
您可以使用嵌套列表理解:
out = [foo for sub_item in foo_list for foo in get_bar_list(sub_item)]
Run Code Online (Sandbox Code Playgroud)
FWIW,我总是很难记住嵌套列表理解的确切顺序,因此我通常更喜欢使用itertools.chain(如摩西的答案中所述).但是,如果你真的爱嵌套列表内涵,顺序是一样的,你会遇到他们在一个正常的循环(可用列表中的理解,第一个表达式最内层循环变量):
for sub_item in foo_list:
for foo in get_bar_list(sub_item):
out.append(foo)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
590 次 |
| 最近记录: |