DRY版本的列表

时间:2011-09-27 07:58:26

标签: python

执行以下操作的最有效方法是什么:

genres = [value_from_key(wb, 'Genre (1)', n),
          value_from_key(wb, 'Genre (2)', n),
          value_from_key(wb, 'Genre (3)', n),
          value_from_key(wb, 'Genre (4)', n),]

我尝试使用列表解析 - genres = [value_from_key(wb, 'Genre (%s)'%(i), n) for i in range[1,4]],但它一直引发一个TypeError,说对象是unsubscriptable。干嘛做这件事的方法是什么?谢谢。

2 个答案:

答案 0 :(得分:5)

在对[1,4]的调用中用圆括号(1,4)替换方括号range

genres = [value_from_key(wb, 'Genre (%s)'%(i), n) for i in range(1,4)]

答案 1 :(得分:2)

  

但是它一直引发一个TypeError,说对象是unsubscriptable。

因为range[1,4]表示“使用元组(1, 4)作为range的下标”。由于range是一个函数,你想调用它,即将参数放在括号中(就像你对value_from_key所做的那样)。我真的没有看到你如何从这样的错误中得出结论,列表理解本身有问题。 O_O

  

干嘛做这件事的方法是什么?

列表理解。