手機也能上課
1/2
這是為什么?
示例:
some_string = "w3cschool"
some_dict = {}
for i, some_dict[i] in enumerate(some_string):
pass
執(zhí)行并輸出:
>>> some_dict # 創(chuàng)建了索引字典.{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 指分配目標. 這意味著對可迭代對象中的每一項都會執(zhí)行類似 {exprlist} = {next_value} 的操作。
一個有趣的例子說明了這一點:
for i in range(4): print(i) i = 10
執(zhí)行輸出:
0
1
2
3
你可曾覺得這個循環(huán)只會運行一次?
說明:
- 由于循環(huán)在Python中工作方式, 賦值語句 i = 10 并不會影響迭代循環(huán), 在每次迭代開始之前, 迭代器(這里指 range(4)) 生成的下一個元素就被解包并賦值給目標列表的變量(這里指 i)了.
在每一次的迭代中, enumerate(some_string)
函數(shù)就生成一個新值 i
(計數(shù)器增加) 并從 some_string
中獲取一個字符. 然后將字典 some_dict
鍵 i
(剛剛分配的) 的值設為該字符.
本例中循環(huán)的展開可以簡化為:
>>> i, some_dict[i] = (0, 'w')
>>> i, some_dict[i] = (1, '3')
>>> i, some_dict[i] = (2, 'c')
...
>>> some_dict