当前位置:  开发笔记 > 编程语言 > 正文

理解Python列表推导的问题

如何解决《理解Python列表推导的问题》经验,为你挑选了2个好方法。

以下代码中的最后一行是什么意思?

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])

我尝试解决这个问题:

"".join ...使用join -method来清空文本

e [1]*e [0]将序列中的两个后续值相乘,例如e

我不确定是什么意思

我不确定,这意味着什么,当你在-loop之前有什么东西时,比如: e[1] * e[0] for e in elt

Torsten Mare.. 20

也许最好用一个例子来解释:

print "".join([e[1] * e[0] for e in elt])

是简短的形式

x = []
for e in elt:
  x.append(e[1] * e[0])
print "".join(x)

列表推导只是for循环的语法糖,它从一系列语句中产生表达式.

elt可以是一个任意对象,因为你从pickles加载它,e同样.用法表明它是序列类型,但它可能只是实现序列协议的任何东西.



1> Torsten Mare..:

也许最好用一个例子来解释:

print "".join([e[1] * e[0] for e in elt])

是简短的形式

x = []
for e in elt:
  x.append(e[1] * e[0])
print "".join(x)

列表推导只是for循环的语法糖,它从一系列语句中产生表达式.

elt可以是一个任意对象,因为你从pickles加载它,e同样.用法表明它是序列类型,但它可能只是实现序列协议的任何东西.



2> Andy Dent..:

首先,您需要将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")

这表明我们每行数据都是一个包含两个元素的元组.

因此,表达式e 1*e [0]实际上是e [0]重复e 1次的字符串.

因此,该计划绘制了一面旗帜.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有