有这样的事情:
a,b,c = a,b,c.method()
这只是一个例子,我想知道最简单的方法
答案 0 :(得分:7)
不是那么简短,但如果我理解你的话,那就行了:
a, b, c = (x.method() for x in (a, b, c))
(注意,如果a
,b
或c
指的是同一个对象,则该方法将被调用几次。)
答案 1 :(得分:5)
不短。但是这里有一个使用operator.methodcaller
的替代方案。
a, b, c = map(operator.methodcaller('method'), (a,b,c))
示例:
>>> import operator
>>> a, b, c = [1,2,3], [4,5,6], [7,8,9]
>>> a, b, c = map(operator.methodcaller('pop'), (a,b,c))
>>> a
3
>>> b
6
>>> c
9
>>> m = operator.methodcaller('pop') # If you call `method` multiple times,
# keep a reference to the methodcaller
>>> a, b, c = [1,2,3], [4,5,6], [7,8,9]
>>> a, b, c = map(m, (a,b,c))
>>> a
3
>>> b
6
>>> c
9
如果所有对象都是相同类型,则可以使用未绑定方法。例如a
,b
,c
这里列出所有列表实例。因此,您可以使用list.pop
代替operator.methodcaller('pop')
。
例如:
>>> a, b, c = [1,2,3], [4,5,6], [7,8,9] # a, b, c are all `list` objects.
>>> a, b, c = map(list.pop, (a,b,c))
>>> a
3
>>> b
6
>>> c
9
答案 2 :(得分:1)
使用发电机是最简单的方法。例如,如果a,b和c是字符串:
a, b, c = 'asdf', 'quer', 'zxcv'
你想把每个字符串的开头大写,你可以这样做:
a, b, c = (x.capitalize() for x in (a, b, c))