列表解析式
Posted jingru-qaq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表解析式相关的知识,希望对你有一定的参考价值。
列表解析式
标签(空格分隔): Python-解析式
列表解析式
生成一个列表, 元素 0~9,最每一个元素自增 1后,求平方,返回列表
# 普通实现 lst = [] for i in range(10): lst.append((i+1)**2) # 列表解析式实现 lst = [(i+1)**2 for i in range(10)]
- 语法
[返回值 for 元素 in 可迭代对象 if 条件]
- 使用中括号 [], 内部式
for
循环 ,if 条件语句可选
- 立即返回一个新列表
- 列表解析式是一种语法糖
- 编译器会优化,不会因为简写而影响效率, 反而因优化而提高了效率
- 减少程序员工作量,减少出错
- 简化代码,增加可读性
列表解析式进阶
- 语法
[expr for i in iterable1 for j in iterable2]
- 等价写法:
lst = [] for i in itersble1: for j in iterable2: lst.append((x, y))
- 语法
[expr for i in iterable1 if cond1 if cond2]
- 等价写法:
lst = [] for i in itersble1: if cond1: if cond2: lst.append(i) >>> 等价于 for i in iterable1: if cond1 and cond2: lst.append(i)
练习题
返回 1-10 平方的列表
print([i**2 for i in range(1, 11)])
有一个列表 lst = [1, 4, 9, 16, 2, 5, 10, 15],生成一个新列表,要求新元素是lst相邻2项的和
lst = [1, 4, 9, 16, 2, 5, 10, 15] length = len(lst) print([lst[i]+lst[i+1] for i in range(length-1)])
打印 九九乘法表
[print("x=:>".format(j, i, i*j, 1 if j == 1 else 2, "\n" if i==j else ‘ ‘), end="") for i in range(1, 10) for j in range(1, i+1)]
打印ID, 要求左边4位是从1开始的整数,右边是10位随机小写英文字母,中间以点分隔; 打印前100个
import string from random import choice [print(".".join([":0>4".format(i), "".join(choice(string.ascii_lowercase) for _ in range(10))])) for i in range(100)]
以上是关于列表解析式的主要内容,如果未能解决你的问题,请参考以下文章