【问题标题】:returning a list in a single line in python在python中的单行中返回一个列表
【发布时间】:2014-10-15 15:27:51
【问题描述】:

我只是好奇是否有更简单的方法可以做到这一点。如果我想在一行上打印一个项目列表,我只需写

for i in things:
  print i,

但是如果我用 print 代替 return 我显然只会得到列表的第一项。我还需要用逗号和空格分隔的列表,所以我最终得到了一个看起来像这样的函数

def returner(things):
  thing = ""
  n = 1
  for i in things:
    thing += i
    if n < len(things):
      thing += ", "
    n += 1
  return thing

有没有更好的方法来做到这一点?

【问题讨论】:

  • 每次您执行thing += 时,您都在创建一个新字符串。这是非常低效的。

标签: python list for-loop printing return


【解决方案1】:

使用连接

return ", ".join([str(x) for x in things])

【讨论】:

  • 是的,做到了。我想我需要复习一下。加入谢谢
【解决方案2】:

您可以使用字符串连接功能 -

",".join(things)

【讨论】:

  • 只要things 只包含字符串就可以了。
  • 是的,它只是字符串,所以看起来这也可以,并且完全不需要函数。
【解决方案3】:

我认为您将身份与表示混淆了

def returner(things): #misnomer since this is actually a generator
    for itm in things:
        yield itm

print ", ".join(map(str,returner(a_list)))

【讨论】:

  • returner 似乎没有必要,因为您可以直接将列表传递给map
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-23
  • 1970-01-01
相关资源
最近更新 更多