2

说我做这样的事情:

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 变量输入是否仅限于一项操作,还是可以将输出传递到下游?

4

1 回答 1

4

您的两种情况完全不同;在第一个中,您有一个可调用的 ( str.format),在第二个中,您构建了一个完整的字符串。

您还需要为第二个选项创建一个可调用对象;在这种情况下,一个 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.strftimestr.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>']
于 2013-05-13T17:31:02.797 回答