Python如何用列表表达式成组推导元素

例如: [*[i,2*i] for i in range(10)] 生成[0,0,1,2,2,4,3,6,4,8,5,10,6,12,7,14,8,16,9,18]。


可以使用嵌套的列表推导来成组推导元素,就像你提供的示例一样。下面是如何使用列表表达式来实现这个功能:

result = [item for i in range(10) for item in [i, 2 * i]]
print(result)

这将生成与你所期望的相同的输出:[0, 0, 1, 2, 2, 4, 3, 6, 4, 8, 5, 10, 6, 12, 7, 14, 8, 16, 9, 18]。这里的关键是在外部列表推导中使用两个循环,内部循环用来生成每个元素及其倍数。

具体一些,就是这样的

# 创建一个空列表,用于存储结果
result = []

# 外部循环遍历范围为0到9的数字
for i in range(10):
    # 内部循环生成两个元素,分别是 i 和 2 * i
    # 这个内部循环会产生两个元素,然后将它们添加到结果列表中
    result.extend([i, 2 * i])

# 打印最终的结果
print(result)

这段代码首先创建一个空列表 result 用于存储最终的结果。然后,外部循环遍历数字 0 到 9。在每个循环迭代中,内部循环生成两个元素,分别是 i2 * i,然后使用 extend 方法将这两个元素添加到 result 列表中。最后,打印出 result 列表,得到了与你期望的相同的输出:[0, 0, 1, 2, 2, 4, 3, 6, 4, 8, 5, 10, 6, 12, 7, 14, 8, 16, 9, 18]。这就是如何使用嵌套循环和列表操作来实现你的需求。