Python 这个for循环如何在以下字符串上工作?

Python 这个for循环如何在以下字符串上工作?,python,dictionary,for-loop,Python,Dictionary,For Loop,我一直在研究阿尔·斯维格哈特的那些无聊的东西。我正在努力理解下面的代码: 输入 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)

我一直在研究阿尔·斯维格哈特的那些无聊的东西。我正在努力理解下面的代码:

输入

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}
输出

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、饼图等),因此代码如何知道通过字符串中的每个字符运行循环?

python中的字符串是字符序列:。因此,m:中c的
行在
m
序列的每个元素上迭代,即在字符串的每个字符上,字符串是python中的数组。所以,这意味着当你在一个字符串上循环时,你在每个字符上循环;在本例中,您可以将读取的内容设置为
字符


然后,如果字符还不在dict中,setdefault将字符映射为0。其余看起来非常简单。

这与变量的名称无关,而是与该变量指向的对象有关。Python虚拟机中循环的实现知道如何根据对象的类型对其进行迭代

迭代
something
实现为迭代
iter(something)
,这反过来又与迭代相同。不同的类实现各自版本的
\uuuu iter\uuuu
,以便循环正常工作

str.\uuuuuuuuuuuuuuuuuu
迭代字符串的各个字符,
list.\uuuuuuuuuuuuuuuuu
迭代列表的元素,依此类推


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

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

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

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

这是字符串的一个属性,
对字符串进行迭代依次生成每个字符。正如您所说,这不是命名变量的问题。