gpt4 book ai didi

python - 为什么 'int"在 Python 中不可迭代,但 'str' 是?

转载 作者:行者123 更新时间:2023-12-02 19:24:33 26 4
gpt4 key购买 nike

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

找出 1 到 1000 中所有包含 3 的数字

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

print(result)

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

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!) )。但答案“我们遍历字符”已经足够接近了。

关于python - 为什么 'int"在 Python 中不可迭代,但 'str' 是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62599810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com