什么是迭代

在Python中,如果给定一个listtuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。

在Python中,迭代是通过 for ... in 来完成的,而很多语言比如C或者Java,迭代list是通过下标完成的,比如Java代码:

for (i=0; i<list.length; i++) {
n = list[i];
}

可以看出,Python的for循环抽象程度要高于Java的for循环。

因为 Python 的 for循环不仅可以用在list或tuple上,还可以作用在其他任何可迭代对象上。

因此,迭代操作就是对于一个集合,无论该集合是有序还是无序,我们用 for 循环总是可以依次取出集合的每一个元素。

注意: 集合是指包含一组元素的数据结构,我们已经介绍的包括:
1. 有序集合:list,tuple,str和unicode;
2. 无序集合:set
3. 无序集合并且具有 key-value 对:dict

而迭代是一个动词,它指的是一种操作,在Python中,就是 for 循环。

迭代与按下标访问数组最大的不同是,后者是一种具体的迭代实现方式,而前者只关心迭代结果,根本不关心迭代内部是如何实现的。

任务

请用for循环迭代数列 1-100 并打印出7的倍数。

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjMAAAEgCAIAAADOmmU9AAAVlElEQVR4nO3d/4vc9Z0H8PwR98v9sC77gyBHeqAQCLVNcLF4SRAEidTEbnqNBvqLhKyxNqHYCAkobQMmuXwhhSKhQjEN+kPzwy5p5brpHndttba9U+riXbkeam2+sf4698N8n/l8dmZ23jPv12QfTx7IzuxkZqPb17Ofr+9Nf/f39wBAHJuy/wQA0EozARCLZgIgFs0EQCyaCYBYNBMAsWgmAGLRTADEopkAiEUzARCLZgIgFs0EQCyaCYBYNBMAsWgmAGLRTADEopkAiEUzARCLZgIglk03WnLz5s3qPxu5devW7du3P/nkk6npGVLZJCJSkopUKppJM4lIoOQuhRDRTJpJRAIldymEiGbSTCISKLlLIUQ0k2YSkUDJXQohopk0k4gESu5SCJG2Zrpz587q6uqdO3c0k2YSkSzJXQoh0mym27dvr66ufuELX2gtJ82kmURknMldCiGyqbWW7rnnni1btuzdu7dRTppJM4nIOJO7FEJkU6OWZmZmduzY8e1vf/t73/veiRMnquWkmTSTiIwzuUshRDbduHFjdXV19+7d3/rWt374wx/+9Kc/vXr16s9//vOf/exnq6urmkkzicg4k7sUQqS5zdQd20yaSUTGnNylECLOGtdMIhIoyYb7yN55DNFMmklEAiXZcG95q4RvO55oJs0kIoGSbLhrJjSTiCRJ+ik/abVU0UyaSURCJf2U10xoJhEZJolH/ATWUkUzaSYRCZXEI14zoZlEZMgkHvGaad3mFyuVxcP9vrJSqaxc2Jm7XTSTiIwiiUe8ZhpDM01Nz0zNL2omEblbk3jEa6Yx0Uwicvcm8YjXTOu28/xKbZupurdu8XBtr11l5dyu+st2XVhp/NSNZqq/ru2Pr1zYWdvvtzjf/kHV7y+cr73Vwnz1+UfPrTTetvZ1/VuaSUTGmjHM/fjJ30w7z69UKs29edWHC/P1wqg9f3ih3hbzi41mOrxQq67md6fmF6uFNL/YWUvNEqr+8fnFluZrvNXM1PThc+cfHWkT5/7NF5G4ydwJMZK/maZat5lKvt55fqVtO2nlws72J+cXKyv1OplfrKwsLp4r2eiZX2zbVGr7U9Wv5y80N9Q0k4iMN7lLIUQmp5kap0i0NlNrGi/YdWGldTdgaTO19Vl9Y+vRc4sjP4iV+zdfROImUxfEyuQ005rbTG3dc/7CfGuTlTZT2zZT9eHC+QtlG1uaSUTGkNylECKT0UzV0x+qjdIspNZto10XVuonQSzMz7QdeWo/K735df2IVNuP0XXShGYSkXEmdymESIBmapyHd/7R1q8bO+vqh3/q31pZqVRaz2KodDxcOf9o40S+5kkTrc1U/zOde/wa9aaZRCRTRj30JyIBmmm8Wo8zdXfkSE8W10wi0jOJR/yab5j841JFMzWM49wHzSQiayfZcO/1hmk/Lm02VjM1d/61XbFUvbq29HQ+zSQiY0viEV/yhtXnk39cqmysZgoi8y++iARO4hFf9IaNJ5N/XKpoJs0kIoGSeMRrJjSTiAyZxCO+6w1bn0n+camimTSTiARK4hGvmdBMIjJkEo/4omYa6ScmiWbSTCISKIlHvOuZ0EwiMmQSj3jNhGYSkSGTbLiv+baj+MSE0UyaSUQCJXcphIhm0kwiEii5SyFENJNmEpFAyV0KIaKZNJOIBEruUggRzaSZRCRQcpdCiGgmzSQigZK7FEJEM2kmEQmU3KUQIppJM4lIoKSc7+Vvm/aDkkczaSYRCZRkw739rRoPk3/QKNJvM9173+ZcshcJwNgkG+4lzVT4MFo0E0AgyYa7ZtJMAEmMZNDfrceZwjXTlucunl546/TCW6cXLs5tT/3LMfvCletLV45s6/f12599aeGtl557MPfv9FAeOvLGAH/l0Zl94crlFx7K/mNAHiMZ9Jqp3I6jb15fWj779QTNtOf46YXjO0f3y7EBm2nu1eXrr851PLn5xLF9K6d2Hej3TYpff+DgvpVT+1ZO7Vs5NvtwP+8/d3pp+fRT+f+dQAbpp3xRCWmmzffet/ne/WeXlq8cffFsmmba8tzF09/fnfsX6G7y1JnrbxydbXtyx66VU0+c+Nqufpup5PUHDjYKafOJY/tWDm7t5/23Hb28dGYu+78WGL/EI76kgTRTdWvp7Ndr/TS6Ztr+7Eu1/XtvtXz3wblLF+e2Pzh3qc9df9uOXl5avr60fL3Pydh457cO7un4YY7v3HO89vNcenZLj/e5/5nXDz2z/f5nXj/22rVjr1079Ezz55w9cq365LHXTs7W3//xk9f2P7Z3f+351x/f2vzox082Xn/t2GvX9j/W9T4nn7+/9dMfOvJG5zbK5hPHdh2YrvZHP81U9vqtl049caLxd98y+3btYc/3n3t1uXuf3qDbsjB5Us738vrRTB1bTsXN9NTcP7cqa6ZmDZzuKKHtz77UbJ0H5y419q3V/kj14ZbnLvZRElOD/3/2B+cudTdTo5C6vlug1knVztj6/KF62dz/zOtt1VIrlWr9NF9z7Mje5mtqX29//GSz4Vqeb/u6x1+232YqeX3rwy2zb5/at3Jq36Udfb1/wWacZmIDSDbcnZs3fDO1ltN6tpk6n9lzvLUVmkeAms+vLUkzNY+E7fx+z6NQ9z/zesumzN79bZtBdY+dbG2mRmOVPd/SWO1vuPX5Q83Nr9kXrnR3QN3wzXRs9uFaJz1xYsvmE8f6baZtRy8rITagZMO95BreEV3YmzaBmqlaTuvcm9c5+pvF0M/2Src8zdSyHdO09flDLbvmejVTyTZTx5u07QCcfeFK97kPdQm2maqdVH1mgGaamjutmdiAcpdCiMRqpkIF//EG3Waa4GZq2yPXxzZT60Gp1l12JRth0zOj3WbaMvt26+675nGm3u/vJAg2ptylECJ3SzO1H2fafXCh7TjTBDfT3v3NUxj27u+9zbR3f3M3XZuOY0v9/mWLm2Pu1eXrxSd2d72+5dy8mQMHW87NW+v9Z6YcZ2Kjyl0KITKmZvr6ueu1E95qBuingv94xefmNU6Ea7u0aMBmmn3hSvuP2qOfWk8IbD1DL93evMdONve/Pfb8oV7bTI2z+7o2m9rP2Wv9rIJz81ouQqpp64+nzlxfaj93rvz11YuW9q2caqultd/fuXlsWLlLIUQm9h4QFGo5qW9qeqZ9k2stRRsoa9l29PJIL4a1K48NK3cphIhmurs8dvJY5zl4ZYeXOhTeA6LIQ0feKNuVl4p7QLCB5S6FENFMd5v2vXl91tLM1LT75kEIuUshRDQTQCAp53vJdUuuZ9JMAANINtzL17Rd42VBopkAAkk23DWTZgJIItlw10x3XTOVr7c02IqFXdffbDt05NrVV65dfeUHT05Nz0xNb/vqj69+c0/+/zEAQYxk0PfXUnEytmZ6+nT92tXLL+6Y2GYadMXCzmb6yg+uHjm8bWr6yW9e+9FXt808cPhHtYqq34e7qXORvQGUr9QHRDeSQV+0pm3YWqqM8x4Qp/dvvve+zfc+8uLl5StHHwneTCWGXrGwrZn2HDpy7eWvFL2s4C4+fStdqQ+YBOmnfPlS62HLafx783YcfXOwzaYx/1qUrAQ4MzU9WDMVr0BY35t35PCT5fvx2lfbG0zZSn1V7u4D0SUe8eW1VPaCCBl/Mz19erm+/dSiz5UDx6bjbnvlKxb2UHqXnT0v1w81dXr4a0+sf0Onx0p9mgmiSznfi1pHMxXv1lt688WHi741wMqBo1d8H9jB9+aVNFPtOFPRH+nYYHrym9UzJhp+fOiBNZ7vuVIfEFuy4e7cvD49/OKVpTUPMvW7cuDojbSZakeb9rxcLZXWfXoPf+2JoU5b6LlSHxBbsuFesqZtx7dSfVzajK+ZetZSmSy/HCNspj0vv/LjQw80NptqD6vf3XrpVEeRDLjN1HOlPiC23KUQIuNqpv1n11dLd10zNfbjFTTTsBtM0zNTPVbqc5wJostdCiEynmZqXsyUZuXAESpbCXBmanqgZipegbB+1vjM1PTMA4d/9Mq1q680Djh1bO6sX/FKfc2fSjNBYLlLIUTcAwIgkNylECKaCSCQ3KUQIpoJIJDcpRAimgkgkNylECL9NtN9//CPuWT/RbkLfPFLX/7il76c/ccAeko533tdzBT2kibN1PTII49k/6UcEc0EkyLZcJ+0lS9ao5k2BM0EkyLZcNdMd0czBd5mKl/JsD+9msl1ThDFSAZ9+968UXxE2oypmb5xrnnN6eUXd8VspsAGa6bdBzvX29VMMCkSj/iuI0nVh2GPMFUz/m2mA2eWr595OmIzBd5mGszgzQREMZJB33UGRPfzoZJhb943zg222ZT9FyWp7c++tHB8557jtbsfXXq2frvVB+cuXZzb3lgIqlEtJSsZFr9PwTpSB/dMrdlMxSscApmMataXlFDMchp7M/3Tdy8vn/1GyL15Y9lmqt2X7/jOmalqkdT30dVKpfpwy3MXW0prquAOs9X3aSmklu+uY5updIVDYLxGNes1U9mmkuNM9W2dxsM9x1vbpXkkqfl8VWEzNd9n5/dbj0JpJphcyYb7Rlg5MO3evKVzBwI209i2mUqbqXvdjTrNBBtEsuFecj7eRJynl+Os8afPLr353UfiNdNYtDdKy7IamgmYGs09IPp8Pk7G30y7vvOmbabaw90Hm+c1JGym9h2DM1OaCSZH7lIIkfE0067vvOl6pqr2lQlbyqakmcpWMlyrmdr+VI9z84pXOARyyV0KIeIeEE05jjONieuZYFLkLoUQ0UxjppmAteQuhRDRTE22mYDscpdCiGimDUEzwaTIXQohYk1bgEByl0KIaCaAQEYy6Lvu+xD8kibNBBBI+inftdp6x3eTf+Lw0UwAgSQe8fXVmDqeKXsYJJoJIJCU873oLq6aSTMBDCblfO+1QmDMWqpoJoBQkg33Pu4prpk0E0BvyYZ7r2YKW0sVzQQQSrLh3pWO76b6oFFEMwEEMpJBP1G1VNFMAKGMZNA7N08zAaxb4hHftTdv7b18QaKZAALJXQohopkAAsldCiGimQACyV0KIaKZAALJXQohopkAAsldCiGimQACyV0KIaKZAALJXQohopkAAhnJoO+6aCnslUzVaCaAQNJP+fKb5oUtJ80EEEjiEW9NW80EMKSU892atpoJYHgp57tm0kwAw0s23Ptoo7DnQWgmgECSDfc117RtdJJm0kwAPSQb7v2tdqGZNBNADyMZ9OX1o5k0E0APIxn0rmfSTADrlnjEF+3Ni7yabTWaCSCQ3KUQIpoJIJDcpRAimgkgkNylECKaCSCQ3KUQIpoJIJDcpRAimgkgkNylECKaCSCQ3KUQIpoJIJBkw33NuxMFv6RJMwEEkmy493FHIs2kmQB6SzbcJ+oWrh3RTACBJBvumkkzASSRbLjXl18qvJ1r5INMFc0EEEqy4d7SPd23c+1+PlQ0E0Ago5r1JW0Us5w0E0Ago5r1mkkzAaxPsuHe32qBmkkzAfSQbLi3H1sq/FbMWqpoJoBQUs738hs9ODdPMwH0K3cphIhmAggkdymEiGYCCCR3KYSIZgIIJHcphIhmAggkdymEiGYCCCR3KYSIZgIIJHcphIhmAggk8Yhfc0HbsJc0aSaAQFLO95J7jRe+JlQ0E0AgyYZ7fysHaibNBNBDsuHeR+XErKWKZgIIJdlwX3Pt2sgHmSqaCSCUZMO9j7Vrw5aTZgIIJNlw7+94Usxy0kwAgSQb7ppJMwEkkWy4W9NWMwEkkXK+97qeKWYtVTQTQCiJR3zROXjBbwBR0UwAoeQuhRDRTACB5C6FENFMAIHkLoUQ0UwAgeQuhRDRTACB5C6FENFMAIHkLoUQ0UwAgeQuhRDRTACBJBvuXen+bqrPSh7NBBBIsuHexzq2YctJMwEEkmy493dHopjlpJkAAkk/5desIs2kmQB6SD/lNZNmAhhG4hFfdDvXtV8QIZoJIJDEI14zaSaAISUe8ZpJMwEMKfGI10yaCWBIiUd8UfG4nkkzAQwg8Ygv6R73gNBMAP3KXQohopkAAsldCiGimQACyV0KIaKZAALJXQohopkAAsldCiGimQACyV0KIaKZAALJXQohopkAAkk23EvWtF17rdsg0UwAgSQb7n2sHBizliqaCSCUZMNdM2kmgCTST/nyGxQl/6xU0UwAgaSf8ppJMwEMI/GIn8BaqmgmgFASj3jNpJkAhpR4xGsmzQQwpMQjXjNpJoAhJR7xmkkzAQwp8YjXTJoJYEi5SyFENBNAILlLIUQ0E0AguUshRDQTQCC5SyFENBNAILlLIUQ0E0AguUshRDQTQCC5SyFENBNAICnne6+Fa8Ne1aSZAAJJNtzbW6e7hMIutV7RTAChJBvuazZT9aFm0kwAvSUb7uXN1PhaM2kmgN5SzveSBtJMmglgAIlHfNfBpMKNp2jRTACBpJzvRdtGmkkzAQwm2XAv34PXkVSfmDCaCSCQZMO911njZU9GiGYCCCTZcNdMmgkgiZTzvXyXnb15mgmgX7lLIUQ0E0AguUshRDQTQCC5SyFENBNAILlLIUQ0E0AguUshRDQTQCC5SyFENBNAILlLIUQ0E0AgiUd8yRVLMS9jamTT+ZZcuHCh+s9GfvKTn/zmN7/RTADjkXK+l9zRNewFto1s+vzzzz///PPV1dXV1dXPPvvs008/++STTz/++JO//OX/Pvrov99553eXL1/WTADjkWy497GmbdhsWl1dvX37zs1bt27cuPnnP//vRx/9z4crH33wwYfv/u73//rLX7333h/O/MsZzQQwHsmG+0Q30507d27evPW3v934618/+/DDj95//09//M/333vvj8v/9h9vv730zju/00wAY5NsuE90M926dbtaSx9//On7H/zpD3/4r3ff/f2vf/3ur37177/4xS9/+9t3NRPA2KSc7+1rMhV+K2Y0E0AgiUd8vZM0k2YCWKdRzXrNpJkA1mdUs14zaSaA9Uk534uuZyp7JlQ0E0AgKed70UW1m9qT8OMSRjMBBJK7FEJEMwEEkrsUQkQzAQSSuxRCRDMBBJK7FEJEMwEEkrsUQkQzAQSSuxRCRDMBBJK7FEJEMwEEknjEF1205HomzQQwgJTzvWRN28LXhIpmAggk2XAvaSDNpJkABpNsuGsmzQSQRLLhXt5Aa9zpNUg0E0AgKef7mmvahq2limYCCCXxiC9a09Y2k2YCGMCoZr3jTJoJYH1GNes1k2YCWJ+U8931TJoJYHgp53vJjR7cA0IzAQwgdymEiGYCCCR3KYSIZgIIJHcphIhmAggkdymEiGYCCCR3KYSIZgIIJHcphIhmAggkdymEiGYCCCR3KYSIZgIIJHcphIhmAggkdymEiGYCCCR3KYTI/wM8s+sWiOrvGAAAAABJRU5ErkJggg==" alt="" />

索引迭代

Python中,迭代永远是取出元素本身,而非元素的索引。

对于有序集合,元素确实是有索引的。有的时候,我们确实想在 for 循环中拿到索引,怎么办?

方法是使用 enumerate() 函数

>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> for index, name in enumerate(L):
... print index, '-', name
...
0 - Adam
1 - Lisa
2 - Bart
3 - Paul

使用 enumerate() 函数,我们可以在for循环中同时绑定索引index和元素name。但是,这不是 enumerate() 的特殊语法。实际上,enumerate() 函数把:

['Adam', 'Lisa', 'Bart', 'Paul']

变成了类似:

[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]

因此,迭代的每一个元素实际上是一个tuple:

for t in enumerate(L):
index = t[0]
name = t[1]
print index, '-', name

如果我们知道每个tuple元素都包含两个元素,for循环又可以进一步简写为:

for index, name in enumerate(L):
print index, '-', name

这样不但代码更简单,而且还少了两条赋值语句。

可见,索引迭代也不是真的按索引访问,而是由 enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身。

任务

zip()函数可以把两个 list 变成一个 list:

>>> zip([10, 20, 30], ['A', 'B', 'C'])
[(10, 'A'), (20, 'B'), (30, 'C')]

在迭代 ['Adam', 'Lisa', 'Bart', 'Paul'] 时,如果我们想打印出名次 - 名字(名次从1开始),请考虑如何在迭代中打印出来。

提示:考虑使用zip()函数和range()函数

aaarticlea/png;base64,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" alt="" />

Python的zip函数

zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。具体意思不好用文字来表述,直接看示例:

1.示例1:

x = [1, 2, 3]

y = [4, 5, 6]

z = [7, 8, 9]

xyz = zip(x, y, z)

print xyz

运行的结果是:

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

从这个结果可以看出zip函数的基本运作方式。

2.示例2:

x = [1, 2, 3]
y = [4, 5, 6, 7]
xy = zip(x, y)
print xy

运行的结果是:

[(1, 4), (2, 5), (3, 6)]

从这个结果可以看出zip函数的长度处理方式。

3.示例3:

x = [1, 2, 3]
x = zip(x)
print x

运行的结果是:

[(1,), (2,), (3,)]

从这个结果可以看出zip函数在只有一个参数时运作的方式。

4.示例4:

x = zip()
print x

运行的结果是:

[]

从这个结果可以看出zip函数在没有参数时运作的方式。

5.示例5:

x = [1, 2, 3]

y = [4, 5, 6]

z = [7, 8, 9]

xyz = zip(x, y, z)

u = zip(*xyz)

print u

运行的结果是:

[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

一般认为这是一个unzip的过程,它的运行机制是这样的:

在运行zip(*xyz)之前,xyz的值是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

那么,zip(*xyz) 等价于 zip((1, 4, 7), (2, 5, 8), (3, 6, 9))

所以,运行结果是:[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

注:在函数调用中使用*list/tuple的方式表示将list/tuple分开,作为位置参数传递给对应函数(前提是对应函数支持不定个数的位置参数)

6.示例6:

x = [1, 2, 3]
r = zip(* [x] * 3)
print r

运行的结果是:

[(1, 1, 1), (2, 2, 2), (3, 3, 3)]

它的运行机制是这样的:

[x]生成一个列表的列表,它只有一个元素x

[x] * 3生成一个列表的列表,它有3个元素,[x, x, x]

zip(* [x] * 3)的意思就明确了,zip(x, x, x)

迭代dict的value

我们已经了解了dict对象本身就是可迭代对象,用 for 循环直接迭代 dict,可以每次拿到dict的一个key。

如果我们希望迭代 dict 对象的value,应该怎么做?

dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
print d.values()
# [85, 95, 59]
for v in d.values():
print v
# 85
# 95
# 59

如果仔细阅读Python的文档,还可以发现,dict除了values()方法外,还有一个 itervalues() 方法,用 itervalues() 方法替代 values() 方法,迭代效果完全一样:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
print d.itervalues()
# <dictionary-valueiterator object at 0x106adbb50>
for v in d.itervalues():
print v
# 85
# 95
# 59

那这两个方法有何不同之处呢?

1. values() 方法实际上把一个 dict 转换成了包含 value 的list。

2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。

3. 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。

如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。

任务

给定一个dict:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }

请计算所有同学的平均分。

aaarticlea/png;base64,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" alt="" />

迭代dict的key和value

我们了解了如何迭代 dictkeyvalue,那么,在一个 for 循环中,能否同时迭代 key和value?答案是肯定的。

首先,我们看看 dict 对象的 items() 方法返回的值:

>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> print d.items()
[('Lisa', 85), ('Adam', 95), ('Bart', 59)]

可以看到,items() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value:

>>> for key, value in d.items():
... print key, ':', value
...
Lisa : 85
Adam : 95
Bart : 59

和 values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。

任务

请根据dict:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }

打印出 name : score,最后再打印出平均分 average : score。

aaarticlea/png;base64,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" alt="" />

最新文章

  1. Ubuntu13.10下安装HADOOP
  2. SQL笔记
  3. HDU 1528 贪心模拟/二分图
  4. PHP用户名用星号处理
  5. 5月23日 JavaScript
  6. 第32讲 UI组件之 时间日期控件DatePicker和TimePicker
  7. logfile提示stale错误解决方法
  8. SVN-钩子祥解与配置
  9. 安卓图表引擎AChartEngine(二) - 示例源码概述和分析
  10. php程序员的成长之路
  11. Matlab与C混编的介绍
  12. Yii1自定义 CGridView 中的操作按钮中 CButtonColumn 选项
  13. 关于VC预定义常量_WIN32,WIN32,_WIN64(转)
  14. Lintcode: Add Binary
  15. 与MQ通讯的完整JAVA程序
  16. git 利用hook 实现服务器自动更新代码
  17. 2016 UESTC Training for Data Structures 题解
  18. 软工网络15团队作业4——Alpha阶段敏捷冲刺-5
  19. Error C2280
  20. 白盒测试实践-任务进度-Day03

热门文章

  1. 【Java】创建线程对象两种方式
  2. JavaScript高级 面向对象(5)--内存逻辑图画法
  3. 找你妹+ipad+wifi,回顾那年的经典游戏
  4. 【C#】获取机器码MachineCode
  5. java clone对象
  6. Win10如何显示系统托盘所有图标
  7. 几个Tab,滑动门,选项卡,图片切换
  8. 【转】如何搭建IPv6测试你的APP
  9. 标准的 C++ 由三个重要部分组成
  10. QButtonGroup:按钮类的非可视化容器,默认可实现按钮的子类实例的单选。