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;却可以迭代?


- padding='same' 转换为 PyTorch padding=# 2022-01-01
- 如何在 python3 中将 OrderedDict 转换为常规字典 2022-01-01
- python-m http.server 443--使用SSL? 2022-01-01
- python check_output 失败,退出状态为 1,但 Popen 适用于相同的命令 2022-01-01
- 使用Heroku上托管的Selenium登录Instagram时,找不到元素';用户名'; 2022-01-01
- 如何在 Python 的元组列表中对每个元组中的第一个值求和? 2022-01-01
- 沿轴计算直方图 2022-01-01
- 分析异常:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data; 2022-01-01
- pytorch 中的自适应池是如何工作的? 2022-07-12
- 如何将一个类的函数分成多个文件? 2022-01-01