您的位置:首页 > 编程语言 > Python开发

【每天1分钟】PYTHON基础之条件与循环(列表解析)

2019-07-25 22:41 686 查看
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

【每天1分钟】PYTHON基础之条件与循环(列表解析)

语法

  1. 基本语法
[expression for iter_val in iterable]
  1. 拓展语法
[expression for iter_val in iterable if cond_expr]

示例

列出 1 ~ 10 的数字平方

# 一般写法
>>> L = []
>>> for i in range(1, 11):
L.append(i ** 2)

>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>>
# 使用列表解析实现
>>> L = [i ** 2 for i in range(1, 11)]
>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>>

列出 1 ~ 10 中,偶数的数字平方

# 一般写法
>>> L = []
>>> for i in range(1, 11):
if i % 2 == 1:
L.append(i ** 2)

>>> L
[1, 9, 25, 49, 81]
>>>
# 使用列表解析的写法
>>> L = [i ** 2 for i in range(1, 11) if i % 2 == 1]
>>> L
[1, 9, 25, 49, 81]
>>>
  1. 使用列表解析实现"全排列"

实现数字1 ~ 3 的1 ~ 3 次方的排列,即:1 ** 1, 1 ** 2, 1 ** 3, 2 ** 1, 2 ** 2, 2 ** 3, 3 ** 1, 3 ** 2, 3 ** 3 的结果

>>> L = [x ** y for x in range(1, 4) for y in range(1, 4)]
>>> L
[1, 1, 1, 2, 4, 8, 3, 9, 27]
>>>
  1. 同时使用字典的key 与 value
>>> D = {1:1, 2:2, 3:3, 4:4}

>>> L = [x ** y for x,y in D.items()]
>>> L
[1, 4, 27, 256]
>>>
  1. 更进一步

5.1
[expression for iter_val in iterable if cond1 if cond2 ]
或者
[expression for iter_val in iterable if cond1 and cond2 ]

等价于:

ret = []
for item in iterable:
if cond1:
if cond2:
ret.append(expr)

5.2
[expression for iter_val in iterable if cond1 or cond2]

等价于:

ret = []
for item in iterable:
if cond1 or cond2:
ret.append(expr)

5.3
[expression for iter_val1 in iterable1 for iter_val2 in iterable2]

等价于:

ret = []
for item1 in iterable1:
for item2 in iterable2:
ret.append(expr)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: