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的数字。这是字符串的一个属性,
对字符串进行迭代依次生成每个字符。正如您所说,这不是命名变量的问题。