为什么&39;int"在Python中不可迭代,而'str&39;却可以迭代? [英] Why is 'int" not iterable in Python, but 'str' are?

查看:35
本文介绍了为什么&39;int"在Python中不可迭代,而'str&39;却可以迭代?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在练习列表理解,遇到以下错误:

查找1-1000中包含3的所有数字

result = [i for i in range(1, 1001) if 3 in i]

print(result)

结果=[范围(1,1000)中的i,如果i中的3]

TypeError:‘int’类型的参数不可迭代

但如果我编写以下代码,它可以完美地工作:

result = [i for i in range(1, 1001) if "3" in str(i)]
print(result)

.所以很明显字符串是可迭代的。但是整数不是。为什么?

推荐答案

,因为不清楚在int上迭代会做什么。您似乎希望它遍历小数位(?)但是,例如,我发现这是不合理的:我会发现迭代它的(即它的二进制数字)要自然得多。在内存中,int表示为二进制数,而不是十进制数,因此我可以争辩说,我的是更自然的预期。

但由于没有明显的正确答案,Python的设计者决定根本不使int可迭代。

相反,对于字符串,有一个直观的"正确"答案(尽管魔鬼在于细节):我们迭代它的字符。不幸的是,这实际上打开了一个蠕虫罐头,因为整本书都是关于"性格"的定义的,而且在实践中会发生一些微妙的不同的事情(如果您很好奇,可以开始阅读The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!))。但是答案"我们遍历字符"已经足够接近了。

这篇关于为什么&39;int"在Python中不可迭代,而'str&39;却可以迭代?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆