如何简化生成随机数列表的Python代码中的random函数调用?
简化随机列表生成的小技巧
嘿,作为编程新手能写出这样完整的功能真的很不错!你提到想简化生成列表时大量调用random函数的问题,确实有不少更简洁的写法,既能减少冗余代码,还能让逻辑更清晰,咱们一起来看看怎么优化:
原代码的核心逻辑梳理
先帮你理一理你原来生成列表的逻辑:
- 生成
e作为随机数的下限(1-9之间) - 列表
c的长度是14 - g(g是1-9的随机数,所以长度在5到13之间),每个元素是e到123之间的随机数,最后排序 - 列表
d的逻辑和c一致,只是长度由h(同样是1-9的随机数)决定
简化方案:用列表推导式替代循环append
原来的while循环+append的写法可以用列表推导式直接完成,一行就能生成并排序列表,省去大量临时变量:
import random # 定义随机数的下限 e = random.randrange(1, 10) # 生成列表c:直接用列表推导式生成指定长度的随机数,再排序 c_length = 14 - random.randrange(1, 10) c = sorted([random.randrange(e, 124) for _ in range(c_length)]) # 同理生成列表d d_length = 14 - random.randrange(1, 10) d = sorted([random.randrange(e, 124) for _ in range(d_length)]) # 打印生成的列表 print(c) print(d) # 判断并输出交集 common_elements = set(c) & set(d) if common_elements: print("The following values are a match:", common_elements) else: print("No match")
额外的小优化
- 去掉冗余的布尔判断:原代码里
if bool(n) == True其实没必要,因为非空集合本身在布尔判断中就是True,空集合是False,直接判断common_elements即可。 - 减少临时变量:原来的
g、h、f这些临时变量都可以省略,直接计算列表长度,让代码更清爽。
这样优化后,代码的功能和你原来的完全一致,但结构更简洁,可读性也更强啦!
内容的提问来源于stack exchange,提问作者Dezert
相关产品推荐
相关产品推荐

