为了账号安全,请及时绑定邮箱和手机立即绑定

帮忙看下为何这两种情况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
  • 参与学习       758625    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

帮忙看下为何这两种情况print的结果不一样

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信