Léo*_* 준영 7 python list-comprehension
以下代码中的最后一行是什么意思?
import pickle, urllib
handle = urllib.urlopen("http://www.pythonchallenge.com/pc/def/banner.p")
data = pickle.load(handle)
handle.close()
for elt in data:
print "".join([e[1] * e[0] for e in elt])
Run Code Online (Sandbox Code Playgroud)
我尝试解决这个问题:
e[1] * e[0] for e in eltTor*_*rek 20
也许最好用一个例子来解释:
print "".join([e[1] * e[0] for e in elt])
Run Code Online (Sandbox Code Playgroud)
是简短的形式
x = []
for e in elt:
x.append(e[1] * e[0])
print "".join(x)
Run Code Online (Sandbox Code Playgroud)
列表推导只是for循环的语法糖,它从一系列语句中产生表达式.
elt可以是一个任意对象,因为你从pickles加载它,e同样.用法表明它是序列类型,但它可能只是实现序列协议的任何东西.
首先,您需要将http://放在URL前面,即:handle = urllib.urlopen(" http://www.pythonchallenge.com/pc/def/banner.p ")
表达式[e表示e中的e]是列表推导,其生成值列表.
使用Python字符串,*运算符用于重复字符串.尝试将命令逐个输入解释器,然后查看数据:
handle = urllib.urlopen("http://www.pythonchallenge.com/pc/def/banner.p")
Run Code Online (Sandbox Code Playgroud)
这表明我们每行数据都是一个包含两个元素的元组.
因此,表达式e 1*e [0]实际上是e [0]重复e 1次的字符串.
因此,该计划绘制了一面旗帜.
| 归档时间: |
|
| 查看次数: |
10867 次 |
| 最近记录: |