App下载
4. 这是为什么?
一本正经的Python课程 / 4. 这是为什么?
手机也能上课
App下载
1/2

这是为什么?

示例:

some_string = "w3cschool"
some_dict = {}
for i, some_dict[i] in enumerate(some_string):
    pass

执行并输出:

>>> some_dict # 创建了索引字典.

{0: 'w', 1: '3', 2: 'c', 3: 's', 4: 'c', 5: 'h', 6: 'o', 7: 'o', 8: 'l'}

说明:

  • Python 语法 中对 for 的定义是:
for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite]
  • 其中 exprlist 指分配目标. 这意味着对可迭代对象中的每一项都会执行类似 {exprlist} = {next_value} 的操作。

一个有趣的例子说明了这一点:

for i in range(4):
    print(i)
    i = 10

执行输出:

0
1
2
3

你可曾觉得这个循环只会运行一次?

说明:

  • 由于循环在Python中工作方式, 赋值语句 i = 10 并不会影响迭代循环, 在每次迭代开始之前, 迭代器(这里指 range(4)) 生成的下一个元素就被解包并赋值给目标列表的变量(这里指 i)了.

在每一次的迭代中, enumerate(some_string) 函数就生成一个新值 i (计数器增加) 并从 some_string 中获取一个字符. 然后将字典 some_dict 键 i (刚刚分配的) 的值设为该字符. 

本例中循环的展开可以简化为:

>>> i, some_dict[i] = (0, 'w')
>>> i, some_dict[i] = (1, '3')
>>> i, some_dict[i] = (2, 'c')
... 
>>> some_dict


+10 经验 +10积分
解析
提示
参考答案
+10 经验 +10积分
视频播放结束,是否学习下一节?