如何在Python迭代中仅打印一次i和j,输出成对相同数字?
解决Python中仅打印i与j相等的数字对问题
嘿,我来帮你搞定这个需求!你想要输出00,11,22,...,99这样的成对数字,但现在的双重循环会遍历所有i和j的组合,导致输出了所有可能的两位数组合,对吧?
先看看你现有代码的问题:
for i in range(10):
for j in range(10):
print(str(i)+str(j))
j+=1
i+=1
这段代码里的双重循环会让外层的每个i,都对应内层j从0到9的所有值,而且你手动加的j+=1和i+=1完全没用——因为range()生成的循环会自动控制变量的迭代,内层循环跑完所有j之后才会进入外层循环的下一个i,所以才会输出所有00、01...10、11这类组合。
接下来给你两个简单的解决方案:
方案1:单循环直接输出
既然你要的是i和j相等的情况,完全不需要双重循环,只用一个循环让数字自身重复就行:
for num in range(10): print(str(num) + str(num), end=',')
这里的end=','是让每个输出用逗号分隔,而不是默认的换行。如果不想最后多出来一个逗号,可以用下面的方法。
方案2:用字符串拼接更优雅
用列表推导式生成所有目标字符串,再用逗号连接起来一次性打印:
print(','.join([str(num) * 2 for num in range(10)]))
这个方法输出的结果就是00,11,22,33,44,55,66,77,88,99,完美符合你的需求~
内容的提问来源于stack exchange,提问作者Vutivi
相关产品推荐
相关产品推荐

