如何在列表推导式中引用random生成的元素并计算平方
使用列表推导式实现随机数及平方生成需求
当然可以用列表推导式实现你的需求,核心是先获取每组的两个随机数,再复用它们构造包含平方值的内层列表。以下是几种可行的写法:
方法1:通过临时元组复用随机值
这种写法清晰直观,先生成包含两个随机数的元组,再扩展为包含平方值的列表:
import random full_list = [[a, b, a**2, b**2] for _ in range(100000) for a, b in [(random.randint(0, 10), random.randint(0, 10))]]
方法2:使用海象运算符(Python 3.8+)
如果你的Python版本支持海象运算符:=,可以更简洁地在推导式内直接赋值:
import random full_list = [[a, b, a**2, b**2] for _ in range(100000) if (a := random.randint(0,10)) or (b := random.randint(0,10))]
这里用or是为了确保两个赋值语句都执行——即使a生成0(布尔值为假),or会继续执行b的赋值操作。
方法3:扩展临时元组
也可以先生成随机数元组,再拼接平方值的列表:
import random full_list = [list(t) + [t[0]**2, t[1]**2] for _ in range(100000) for t in [(random.randint(0,10), random.randint(0,10))]]
这些写法和你原来的for循环逻辑完全一致,生成的每个内层列表都是[随机数1, 随机数2, 随机数1², 随机数2²]的结构,效率和循环版本相当,甚至略高。
内容的提问来源于stack exchange,提问作者solac34
相关产品推荐
相关产品推荐

