為什么把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
舉報
2020-01-07
python中字符串不能用for循環(huán)迭代遍歷
2020-01-11
寫了一段代碼做了個測試可以回答你的疑惑:
for n in '123':
? ? for m in '123':
? ? ? ? print 10 * n + m?
運行結(jié)題如下:
明白了吧?當(dāng)數(shù)字是字符串格式時,*10就是重復(fù)10次,而不是變成10倍,所以才會出現(xiàn)上面的結(jié)果。示例中是字符連接,所以不存在這個問題。
用'123456789'的方式也能實現(xiàn),但輸出的列表中實際依然是字符格式而非數(shù)字:
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
望采納。