幫忙看下為何這兩種情況print的結(jié)果不一樣
代碼一:
>>> L=[('Lisa', 85), ('Adam', 95), ('Bart', 59)]
>>> for key in L:
??? ?print key
('Lisa', 85)
('Adam', 95)
('Bart', 59)
代碼二:
>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> print d.items()
[('Lisa', 85), ('Adam', 95), ('Bart', 59)]
>>> for key,value in d.items():
?print key
Lisa
Adam
Bart
為何兩者的輸出結(jié)果不一樣??
2016-09-14
代碼一 中, L的對(duì)象類型是list,且L中的每一個(gè)元素的對(duì)象類型是元組(tuple)。所以代碼一中的循環(huán)的返回值就是L中的元素,也就是每一個(gè)元組。注意!每一個(gè)元組中還都分別含有兩個(gè)元素(element)。
>>> L=[('Lisa', 85), ('Adam', 95), ('Bart', 59)]
>>> type(L)
<type 'list'>
>>> for key in L:
????????????????print key
('Lisa', 85)
('Adam', 95)
('Bart', 59)
>>> key
('Bart', 59)
>>> type(key)
<type 'tuple'>
代碼二中,雖然d的對(duì)象類型是dictionary,但代碼二是針對(duì)d.items()進(jìn)行循環(huán)的。d.items()本身是一個(gè)list對(duì)象。所以說代碼一中的L和代碼二中的d.items()都是list對(duì)象。而且內(nèi)容相同,只不過名稱不一樣。
但是在代碼二中,for循環(huán)是用兩個(gè)變量迭代的, 所以這兩個(gè)變量分別就對(duì)應(yīng)了list里每一個(gè)tuple中的兩個(gè)element。據(jù)此進(jìn)行循環(huán)。因此,key變量只返回每一個(gè)tuple中的第一個(gè)element,這個(gè)element的類型是str,也就是字符串。也就產(chǎn)生了你看到的結(jié)果。
>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> type(d)
<type 'dict'>
>>> d.items()
[('Lisa', 85), ('Adam', 95), ('Bart', 59)]
>>> type(d.items())
<type 'list'>
>>> for key, value in d.items():
????????????????print key
Lisa
Adam
Bart
>>> key
'Bart'
>>> type(key)
<type 'str'>
其實(shí)這個(gè)題目體現(xiàn)的是python中for循環(huán)的屬性。證明了可用單個(gè)或多個(gè)變量對(duì)對(duì)象進(jìn)行迭代并返回不同的結(jié)果。是for的使用可以更加靈活
2016-10-19
代碼一:key可以看作[(key), (key), (key)]中的變量
代碼二:key可以看作[(key,value), (key, value), (key, value)]中的變量