列表理解中的多个操作

时间:2013-05-13 17:26:26

标签: python python-3.x list-comprehension

说我做这样的事情:

vList=[1236745404]
fList=[ "<td>{}</td>".format ]
[ f(x) for f, x in zip(fList, vList) ]

但现在我想通过将整数转换为多个流程流来将整数转换为时间字符串。

伪代码:

fList=[ "<td>{}</td>".format(time.strftime("%a %H&#58;%M %d %b %y", time.localtime())) ]
[ f(x) for f, x in zip(fList, vList) ]

我想看到的是:

['<td>Tue 22&#58;23 10 Mar 09</td>']

List Comprehension变量输入是限制为一个操作,还是输出可以传递到下游?

1 个答案:

答案 0 :(得分:4)

你的两个案子完全不同;在第一个你有一个可调用的(str.format)你建立一个完整的字符串。

你也需要为第二个选项创建一个callable;在这种情况下,lambda可以工作:

fList=[lambda t: "<td>{}</td>".format(time.strftime("%a %H&#58;%M %d %b %y", time.localtime(t)))]

现在这是一个包含一个可调用的列表,lambda接受一个参数t,并返回将t传递给time.localtime()的完整表达式的结果然后使用time.strftime格式化,然后传递给str.format()

演示:

>>> import time
>>> vList=[1236745404]
>>> fList=[lambda t: "<td>{}</td>".format(time.strftime("%a %H&#58;%M %d %b %y", time.localtime(t)))]
>>> [f(x) for f, x in zip(fList, vList)]
['<td>Wed 05&#58;23 11 Mar 09</td>']
相关问题