为了账号安全,请及时绑定邮箱和手机立即绑定

为什么把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……

正在回答

2 回答

python中字符串不能用for循环迭代遍历

0 回复 有任何疑惑可以回复我~

写了一段代码做了个测试可以回答你的疑惑:

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

望采纳。


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758627    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

为什么把range替换成'123456789'就不行,例子里不也用了'123‘吗

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信