[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