为什么把range替换成'123456789'就不行,例子里不也用了'123‘吗
print [100 * n1 + 10 * n2 + n3 for n1 in '123456789' for n2 in '0123456789' for n3 in '123456789' if n1==n3]
这样输出的就是11111111111111111111……
print [100 * n1 + 10 * n2 + n3 for n1 in '123456789' for n2 in '0123456789' for n3 in '123456789' if n1==n3]
这样输出的就是11111111111111111111……
2020-01-07
写了一段代码做了个测试可以回答你的疑惑:
for n in '123':
for m in '123':
print 10 * n + m
运行结题如下:
11111111111 11111111112 11111111113 22222222221 22222222222 22222222223 33333333331 33333333332 33333333333
明白了吧?当数字是字符串格式时,*10就是重复10次,而不是变成10倍,所以才会出现上面的结果。示例中是字符连接,所以不存在这个问题。
用'123456789'的方式也能实现,但输出的列表中实际依然是字符格式而非数字:
L=[(m,n,l) for m in '123456789' for n in '0123456789' for l in '123456789' if m==l ]
X=[]
for s in L:
X.append(''.join(s))
print X
望采纳。
举报