手机也能上课
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