You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含多print的Python循环转换为推导式并输出10条独立结果?

将Python循环改写为推导式实现多print输出

原始需求代码

需要改写的for循环:

for i in range(1, 11):
    result = len({tuple(walk) for (walk, distance) in dic[i] if distance == 0})
    print(f'There are {result} different unique walks with length {i}')

用户尝试的问题

你尝试的推导式写法会把所有walk合并成一个集合输出,没法得到10条独立的打印语句:

print({tuple(walk) for i in range(1, 11)  for (walk, distance) in dic[i] if distance == 0})

可行的改写方式

想实现10条独立的print语句,不能直接用集合推导式套print(毕竟print是无返回值的函数)。不过可以用列表推导式触发多次print调用——虽然这种写法的可读性不如原始循环,但确实能满足需求:

[print(f'There are {len({tuple(walk) for (walk, distance) in dic[i] if distance == 0})} different unique walks with length {i}') for i in range(1, 11)]

如果想让代码稍微清晰点,可以把计算唯一walk集合的逻辑单独拎出来:

[print(f'There are {len(unique_walks)} different unique walks with length {i}') 
 for i in range(1, 11) 
 for unique_walks in [{tuple(walk) for (walk, distance) in dic[i] if distance == 0}]]

注意事项

用列表推导式执行print这种“副作用”操作,在Python社区其实并不推荐——列表推导式本来是用来生成数据的,不是用来执行动作的。如果追求代码的可读性和维护性,原始的for循环其实是更好的选择。

内容的提问来源于stack exchange,提问作者DaSomes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:50:28