Why is #39;intquot; not iterable in Python, but #39;str#39; are?(为什么39;intquot;在Python中不可迭代,而#39;str39;却可以迭代?)
问题描述
我正在练习列表理解,遇到以下错误:
查找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;却可以迭代?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么&39;int";在Python中不可迭代,而';str&39;却可以迭代?
基础教程推荐
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
