推导式集合

214 阅读3分钟

[python 推导式多个for循环]

(www.cnblogs.com/qianxunman/…)

示例如下:

In [5]: [(i,j) for i in range(10) for j in range(2) ]                                                                                                                                                                                          
Out[5]: 
[(0, 0),
 (0, 1),
 (1, 0),
 (1, 1),
 (2, 0),
 (2, 1),
 (3, 0),
 (3, 1),
 (4, 0),
 (4, 1),
 (5, 0),
 (5, 1),
 (6, 0),
 (6, 1),
 (7, 0),
 (7, 1),
 (8, 0),
 (8, 1),
 (9, 0),
 (9, 1)]

for i in range(10) 可以看作是一个外循环,for j in range(2) 看作是一个内循环 列表推导式的语法格式如下:

[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]
列表推导式用于使用其他列表创建一个新列表。

一般形式:中括号内含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。

[表达式 ​for ​变量 ​in ​列表 ​if ​表达式] ​ ​


 
执行顺序:
  • 各语句之间是嵌套关系;
  • 左边第二个语句是最外层,往右为第二层,依此类推;
  • 而左边第一条语句是最后一层。

\

\

[x*y for x in range(1,5) if x > 2 for y in range(1,4) if y < 3]

\

\

  • 第一层:左边第二个语句 ​for x in range(1,5) ;
  • 第二层: ​if x>2 ​;
  • 第三层:for y in range(1,4) ​;
  • 第四层:if y < 3 ​;
  • 最后一层:左边第一条语句 ​x*y ​。 \
return [[dict(s, **{'_id': a[0]}) for a in get_all_perpetual_contract() if s['symbol'] == a[1]] for s in
        requests.get(fund_url).json()]
        
        ```
datas = []
for s in requests.get(fund_url).json():
    for a in get_all_perpetual_contract():
        if s['symbol'] == a[1]:
            datas.append(dict(s, **{'_id': a[0]}))


http://blog.sina.com.cn/s/blog_154a715de0102zsqy.html

列表推导式用于使用其他列表创建一个新列表。

一般形式:中括号内含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。


> [表达式 ​for ​变量 ​in ​列表 ​if ​表达式] ​ ​

  执行顺序:


> -   各语句之间是嵌套关系;
> -   左边第二个语句是最外层,往右为第二层,依此类推;
> -   而左边第一条语句是最后一层。
>
> \
>
>
> \
>
>
> [x*y for x in range(1,5) if x > 2 for y in range(1,4) if y < 3]
>
> \
>
>
> \
>
>
> -   第一层:左边第二个语句 ​for x in range(1,5) ;
> -   第二层: ​if x>2 ​;
> -   第三层:for y in range(1,4) ​;
> -   第四层:if y < 3 ​;
> -   最后一层:左边第一条语句 ​x*y ​。

Python 列表推导式

原文: Python3 数据结构

**   。。。 www.runoob.com/note/15802 列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表。

它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以 if 和 for 语句为上下文的表达式运行完成之后产生。

列表推导式的执行顺序:各语句之间是嵌套关系,左边第二个语句是最外层,依次往右进一层,左边第一条语句是最后一层。

[x*y for x in range(1,5) if x > 2 for y in range(1,4) if y < 3]

他的执行顺序是:

for x in range(1,5)
    if x > 2
        for y in range(1,4)
            if y < 3
                x*y