【问题标题】:Split in list comprehension拆分列表理解
【发布时间】:2018-08-10 12:44:43
【问题描述】:

我如何使用列表理解来编写这个?我不知道如何解开 il list-comprehension。

for line in f:
    t1, t2, t3 = line.split(" ")
    self._list.append(Time(t1,t2,t3))

我试过了

self._tasks = [Time(line.split(' ')[0], line.split(' ')[1], line.split(' ')[2]) for line in f] 

有没有更好的办法?

【问题讨论】:

  • [Time(*line.split(' ')) for line in f]
  • @MartijnPieters 的答案是完美的,但如果您出于某种原因确实需要显式命名您的中间参数,您可以使用如下内容:[Time(t1,t2,t3) for t1,t2,t3 in (line.split() for line in f)]
  • 谢谢解答。使用星号可以转换 srt ti int 吗?我想用 int 而不是 str 创建时间
  • @Tomonaga:你没有在你的问题中提到这一点。然后使用Time(*map(int, line.split()))(如果您在空格上拆分,则无需传入参数)。

标签: python file list-comprehension


【解决方案1】:

[Time(t1, t2, t3) for t1, t2, t3 in (line.split() for line in f.splitlines())]

有或没有splitlines 取决于你的变量f

【讨论】:

  • f 已经是一个可迭代对象(可能是一个文件),因此无需拆分这些行。