【问题标题】:How do you include newlines in a python list unpack?如何在 python 列表解包中包含换行符?
【发布时间】:2013-02-21 00:26:14
【问题描述】:
for row in rows:
    a, b, c = row

很好,但是

for row in rows:
    alpha, beta, charlie, delta, echo, foxtrot, gamma, horseshoe, indigo, jimmy, killshot = row

不是很好。 Python 通常很好地支持逗号后的换行符,但我无法弄清楚这个的语法。像这样的东西会很好:

for row in rows:
    alpha, 
    beta, 
    charlie, 
    delta, 
    echo, 
    foxtrot, 
    gamma, 
    horseshoe, 
    indigo, 
    jimmy, 
    killshot = row

PEP 8 的处理方式是什么,因为长行是反 PEP 8 的?

【问题讨论】:

  • 如果你有这么多的值,我会避免首先拆包。列表是存储数据序列的一种非常自然的方式,那么为什么要偏离它呢?如果您需要一种清晰的方式来引用不同的项目,那么只需定义一些常量并按如下方式索引您的列表:x = row[ALPHA](假设您已经定义了ALPHA = 0
  • 该列表是来自 sql 查询的一组结果。我正在解压缩它们以使用代码中的值。将它们解压缩到像上面这样适当命名的变量中不是更干净,而不是必须使用带有索引的列表(即使索引是常量)?
  • 嗯,我想这更像是一种偏好。另一种选择是使用namedtuple
  • '命名元组对于将字段名称分配给 csv 或 sqlite3 模块返回的结果元组特别有用' - HA,感谢您的提示。

标签: python list newline iterable-unpacking


【解决方案1】:

使用括号:

for row in rows:
    (alpha, 
     beta, 
     charlie, 
     delta, 
     echo, 
     foxtrot, 
     gamma, 
     horseshoe, 
     indigo, 
     jimmy, 
     killshot) = row

就我个人而言,我可能会在每行中使用多个项目(打破行长的地方,或者项目的含义有逻辑变化的地方),但只要你保持一致,我认为风格上面也可以。

【讨论】:

  • 这太容易了,太尴尬了。谢谢!
猜你喜欢
  • 2021-02-23
  • 2020-08-05
  • 2012-05-01
  • 2012-10-21
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
相关资源
最近更新 更多