App下載
4. 這是為什么?
一本正經(jīng)的Python課程 / 4. 這是為什么?
手機也能上課
App下載
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 指分配目標(biāo). 這意味著對可迭代對象中的每一項都會執(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)) 生成的下一個元素就被解包并賦值給目標(biāo)列表的變量(這里指 i)了.

在每一次的迭代中, enumerate(some_string) 函數(shù)就生成一個新值 i (計數(shù)器增加) 并從 some_string 中獲取一個字符. 然后將字典 some_dict 鍵 i (剛剛分配的) 的值設(shè)為該字符. 

本例中循環(huán)的展開可以簡化為:

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


+10 經(jīng)驗 +10積分
解析
提示
參考答案
+10 經(jīng)驗 +10積分
視頻播放結(jié)束,是否學(xué)習(xí)下一節(jié)?