幫忙看下為何這兩種情況print的結果不一樣
代碼一:
>>> 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
為何兩者的輸出結果不一樣??
2016-09-14
代碼一 中, L的對象類型是list,且L中的每一個元素的對象類型是元組(tuple)。所以代碼一中的循環的返回值就是L中的元素,也就是每一個元組。注意!每一個元組中還都分別含有兩個元素(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的對象類型是dictionary,但代碼二是針對d.items()進行循環的。d.items()本身是一個list對象。所以說代碼一中的L和代碼二中的d.items()都是list對象。而且內容相同,只不過名稱不一樣。
但是在代碼二中,for循環是用兩個變量迭代的, 所以這兩個變量分別就對應了list里每一個tuple中的兩個element。據此進行循環。因此,key變量只返回每一個tuple中的第一個element,這個element的類型是str,也就是字符串。也就產生了你看到的結果。
>>> 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'>
其實這個題目體現的是python中for循環的屬性。證明了可用單個或多個變量對對象進行迭代并返回不同的結果。是for的使用可以更加靈活
2016-10-19
代碼一:key可以看作[(key), (key), (key)]中的變量
代碼二:key可以看作[(key,value), (key, value), (key, value)]中的變量