亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

幫忙看下為何這兩種情況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

為何兩者的輸出結果不一樣??


正在回答

2 回答

代碼一 中, 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的使用可以更加靈活

2 回復 有任何疑惑可以回復我~
#1

ninebean90 提問者

非常感謝!
2016-11-28 回復 有任何疑惑可以回復我~

代碼一:key可以看作[(key), (key), (key)]中的變量

代碼二:key可以看作[(key,value), (key, value), (key, value)]中的變量

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
初識Python
  • 參與學習       758397    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

幫忙看下為何這兩種情況print的結果不一樣

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號