gpt4 book ai didi

python - 这个 for 循环如何处理以下字符串?

转载 作者:行者123 更新时间:2023-12-02 16:36:57 24 4
gpt4 key购买 nike

我一直在研究 Al Sweighart 的《将无聊的东西自动化》。我正在努力理解下面的代码:

输入

message = 'It was a bright cold day in April, and the clocks were striking thirteen.'
count = {}

for character in message:
count.setdefault(character, 0)
count[character] = count[character] + 1

print(count)

输出

{'I': 1, 't': 6, ' ': 13, 'w': 2, 'a': 4, 's': 3, 'b': 1, 'r': 5, 'i': 6, 'g': 2, 'h': 3, 'c': 3, 'o': 2, 'l': 3, 'd': 3, 'y': 1, 'n': 4, 'A': 1, 'p': 1, ',': 1, 'e': 5, 'k': 2, '.': 1}

问题

既然在 for 循环中调用什么变量并不重要(即字符可以更改为 x、pie 等)代码如何知道对字符串中的每个字符运行循环?

最佳答案

重要的不是变量名,而是变量指向的对象。 Python 虚拟机中循环的实现知道如何根据对象的类型迭代对象。

迭代 something 被实现为迭代 iter(something),这反过来与迭代 something.__iter__() 相同.不同的类实现了它们自己的 __iter__ 版本,因此循环可以正常工作。

str.__iter__ 遍历字符串的单个字符,list.__iter__ - 遍历列表的元素等等。


您可以创建自己的对象并对其进行迭代:

class MyClass:
def __iter__(self):
return iter([1,2,3,4])

my_object = MyClass()
for x in my_object:
print(x)

这将打印从 1 到 4 的数字。

关于python - 这个 for 循环如何处理以下字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62530953/

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