m*100+n*10+m的问题
为什么例子中的代码就不用乘10位,我把ABC改为123 ,显示结果也是正常,那为什么题上的代码就要乘4呢?是因为range的原因吗?请大佬指点。
为什么例子中的代码就不用乘10位,我把ABC改为123 ,显示结果也是正常,那为什么题上的代码就要乘4呢?是因为range的原因吗?请大佬指点。
2018-07-30
对于字符串 'ABC' 和 '123',可以使用两层循环,生成全排列:
>>> [m + n for m in 'ABC' for n in '123'] ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
这个列表中的元素是字符串, 字符串通过相加,即如print 'a' + '1', 结果为a1; 同样,printf 'a'
+ '1' + '2' , 结果为a12
百位的循环从 1-9,十位和个位的循环从 0-9。
参考代码:
print [100 * n1 + 10 * n2 + n3 for n1 in range(1, 10) for n2 in range(10) for n3 in range(10) if n1==n3]
而题目列表中的元素是整数,对于数值来说,不存在这种用法。
对于你说的将例子中ABC改为123,虽然打印出来可以得出相同结果,但实际上你无法将字符串进行算术运算,编译器会报错。
举报