DRY version of a list
What would be the most efficient way to do the following:
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),]
I tried doing it with a list comprehension -- genres = [value_from_k开发者_StackOverflowey(wb, 'Genre (%s)'%(i), n) for i in range[1,4]]
, but it kept raising a TypeError saying object is unsubscriptable. What would be the DRY way of doing the above? Thank you.
Replace the square brackets [1,4]
with round braces (1,4)
in your call to range
:
genres = [value_from_key(wb, 'Genre (%s)'%(i), n) for i in range(1,4)]
but it kept raising a TypeError saying object is unsubscriptable.
Because range[1,4]
means "use the tuple (1, 4)
as a subscript for range
". Since range
is a function, you want to call it, i.e. put the arguments in parentheses (just as you do for value_from_key
). I don't really see how you would conclude from an error like this that there's something wrong with the list comprehension itself. o_O
What would be the DRY way of doing the above?
With the list comprehension.
精彩评论