如何用Python 3.10一行列表推导式生成并打印递增子序列
用Python 3.10一行列表推导式生成递增子序列列表
假设我们有一个从1到n的列表[1, 2, 3, ..., n],可以通过一行列表推导式生成两种目标序列:
一、生成到[1, 2, ..., n-1]的子序列列表
如果已经有原列表(比如original_list = list(range(1, n+1))),可以这样写:
result = [original_list[:i] for i in range(1, len(original_list))]
说明:
len(original_list)等于n,range(1, len(original_list))会生成1到n-1的整数序列;original_list[:i]取原列表的前i个元素,依次得到[1]、[1,2]……直到[1,2,...,n-1]。
如果不想预先定义原列表,直接基于数值n生成,可简化为:
result = [list(range(1, i)) for i in range(2, n+1)]
二、生成到[1, 2, ..., n]的子序列列表
基于原列表的写法只需调整range的结束值:
result = [original_list[:i] for i in range(1, len(original_list)+1)]
说明:
range(1, len(original_list)+1)生成1到n的整数序列;- 取前i个元素后,最终会包含完整的
[1,2,...,n]。
直接基于数值n的简化写法:
result = [list(range(1, i+1)) for i in range(1, n+1)]
内容的提问来源于stack exchange,提问作者Pedro Gonçalves
相关产品推荐
相关产品推荐

